c# - This redundant Readonly prefix -
internal abstract class readonlycoefs { public const boolean allowed = true; public const boolean disallowed = false; public abstract boolean getcoef(); } internal class coefs : readonlycoefs { public override boolean getcoef() { ... } public void setcoef() { ... } }
now, suppose want use somewhere this
if (variable == readonlycoefs.allowed) ...
i don't think want have readonly prefix.
in case can add instance methods isallowed , setallowed, setdisallowed, if there lot of consts, how in such case?
no, there no way want, @ least now. in c# 6, there ability import static members of class using
directive:
using static somenamespace.readonlycoefs;
that allow access static members of readonlycoefs
without specifying type name.
that said, given current design agree hans should using enum
:
enum coefpermission { allowed, disallowed, } internal abstract class readonlycoefs { public abstract coefpermission getcoef(); }
then:
if (variable == coefpermission.allowed) ...
that should compatible using static
feature in c# 6. i.e. have using static somenamespace.coefpermission;
, code read if (variable == allowed) ...
.
now, that said, i'm skeptical of current design. maybe makes sense non-bool
values (especially if switch enum
-based approach). didn't show that. you've got bool
values, , imho making constants or enums silly. instead, why not have like:
internal abstract class readonlycoefs { public abstract boolean iscoefallowed(); } internal class coefs : readonlycoefs { public override boolean iscoefallowed() { ... } public void setiscoefallowed() { ... } }
then:
if (variable) ...
even better if give variable name:
if (iscoefallowed) ...
imho, that's lot more readable , maintainable.
Comments
Post a Comment