[ruby-core:114941] Re: [Ruby master Feature#18915] New error class: NotImplementedYetError or scope change for NotImplementedError
From:
Алдан Муханов via ruby-core <ruby-core@...>
Date:
2023-10-02 15:00:18 UTC
List:
ruby-core #114941
=F0=9F=99=82=F0=9F=91=8D =D0=BF=D0=BD, 2 =D0=BE=D0=BA=D1=82. 2023=E2=80=AF=D0=B3. =D0=B2 19:12, zden= nis (Zach Dennis) via ruby-core < ruby-core@ml.ruby-lang.org>: > Issue #18915 has been updated by zdennis (Zach Dennis). > > File not-implemented-error-docs.patch added > > Whoops, last patch upload failed. Patch actually applied here. > > ---------------------------------------- > Feature #18915: New error class: NotImplementedYetError or scope change > for NotImplementedError > https://bugs.ruby-lang.org/issues/18915#change-104812 > > * Author: Quintasan (Micha=C5=82 Zaj=C4=85c) > * Status: Open > * Priority: Normal > ---------------------------------------- > # Abstract > > Introduce `NotImplementedYetError` exception that should be used in case > when the codepath has not been implemented by the developer for some reas= on > (maybe they're designing an abstract class or are designing some sort of > interface to reuse later on) OR extend the meaning of `NotImplementedErro= r` > to cover those usecases so we don't have to introduce another exception > > # Background > > `NotImplementedError` is supposed to be raised `if the underlying > operating system or Ruby runtime does not support them` ( > https://ruby-doc.org/core-3.1.2/NotImplementedError.html) > > However it appears that many people are misusing this exception by raisin= g > this in a superclass from which they later inherit from. I do realize tha= t > Ruby promotes duck-typing (the default RuboCop style guide has a cop for > this =E2=80=93 https://github.com/rubocop/ruby-style-guide#duck-typing). = However > I have seen this being discussed numerous times: > > * https://github.com/rubocop/ruby-style-guide/issues/458 > * http://chrisstump.online/2016/03/23/stop-abusing-notimplementederror/ > * > https://oleg0potapov.medium.com/ruby-notimplementederror-dont-use-it-dff1= fd7228e5 > * https://gitlab.com/gitlab-org/gitlab/-/issues/354314 (which I'm the > author of) > * https://github.com/rmosolgo/graphql-ruby/issues/2067 (here the author > actually confused it with Python's `NotImplementedError`) > * > https://stackoverflow.com/questions/13668068/how-to-signal-not-implemente= d-yet > > # Proposal > > Create `NotImplementedYetError` exception > > OR > > Allow raising `NotImplementedError` in cases other than OS or Ruby runtim= e > incompatibilities > > # Evaluation > > ### Add `NotImplementedYetError` > > I think a new exception is a better idea than changing the usage of an > existing one just because "everyone is using it". That said it would > require people to refactor their code which might prevent wider adoption = of > the new exception. > > ### Change scope of `NotImplementedError` > > This would require the least amount of changes possible (only a > documentation change) and I believe there would be no compatibility > problems whatsoever. > > ---Files-------------------------------- > not-implemented-error-docs.patch (0 Bytes) > not-implemented-error-docs.patch (1.57 KB) > > > -- > https://bugs.ruby-lang.org/ > ______________________________________________ > ruby-core mailing list -- ruby-core@ml.ruby-lang.org > To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org > ruby-core info -- > https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.= org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/