我的项目中使用了类型代码(即1,2,3(open,close,unused)),我想重构那部分代码。我是否应该按照中提到的方法遵循替换类型代码重构提高现有代码的设计或仅使用枚举就足够了? C#是我的编程语言。类型代码vs枚举重构?
1
A
回答
5
从您所描述的内容中,类型代码表示一组离散的选项,其中没有其他相关信息。因此,我建议使用enum
类型来替换积分表示。
0
如果你只想做最小的工作量,使用枚举是“充分的”,但用类替换它会更好。
1
它看起来像打开,关闭和未使用的状态。如果是的话,那么我建议你使用状态设计模式。它可能看起来像创建更多的类,但代码将是可维护的。 你可以摆脱开关和if/else。
0
再由蝶舞建议国家模式。我不喜欢GOF定义的状态模式,因为它没有包含任何与状态转换相关的操作,也没有定义什么状态转换是有效的。国际海事组织有更好的方法来管理状态比这种模式(然而,如果你没有,它绝对值得阅读模式)。
要回答你的问题,我只是使用枚举。这一点值得考虑命名空间。
您可以将枚举放入您的类中。
public class Box
{
public enum BoxState { Open, Closed, Unused }
}
或直接进入一个命名空间:
namespace MyOrg.Enums
{
public enum BoxState { Open, Closed, Unused }
}
这真的取决于枚举的背景下;非常特定的东西更可能属于类内部,更通用的东西(并且在代码中经常使用)在名称空间内更好。
相关问题
- 1. 使用Hibernate的枚举/类型代码
- 2. Node.js native枚举中的枚举类型
- 3. 枚举抛出“不是枚举类型”
- 4. 迭代通过可枚举类型的可枚举集合
- 5. 为枚举类型
- 6. psycopg2枚举类型
- 7. 枚举或类型
- 8. 上枚举类型
- 9. HTML5枚举类型
- 10. 避免硬编码枚举类型
- 11. Java类枚举枚举类
- 12. INT双重结构和枚举值类型
- 13. 枚举VS查找表VS枚举反射VS State模式
- 14. 重新枚举枚举
- 15. 使用代码合同来使通用类型枚举
- 16. 如何解释枚举类型与EF代码优先
- 17. 缩短枚举代码
- 18. 错误代码的枚举
- 19. 枚举VS在d
- 20. MSVC常量枚举类型
- 21. 自定义枚举类型
- 22. 枚举类型在C++
- 23. 枚举派生类型
- 24. 枚举类用C型串++
- 25. Perl有枚举类型吗?
- 26. 枚举类型和MySQL
- 27. 更改枚举类型值
- 28. Sqlalchemy枚举/类型匹配?
- 29. VBScript中的枚举类型
- 30. 枚举复杂类型
+1对于不同的宏观设计建议,即使这可能是矫枉过正/不相关的。 – 2011-02-03 05:27:16