当您需要设计模块时,您通常会怎么做?到目前为止,我已经注意到它的易用性,API的直观性,可扩展性,性能以及类似的东西。
但对我来说,似乎相当简单和直截了当的可能对于其他用户来说似乎过于复杂。虽然它经常不会发生,但它确实有时发生在我们所有人身上(我希望)。
除了我已经提到的问题之外,在进行编码之前,在设计类层次结构/ API /之前是否应该问自己有什么问题?
如果你认为这个问题更适合关于SO的不同部分,请随意迁移它,但我仍然想要一个答案。
干杯。
答案 0 :(得分:3)
您应该考虑SOLID Principles和here。
关于责任分配适用GRASP Patterns
答案 1 :(得分:3)
你的问题非常好,而且答案很复杂,但答案基本上就是编程方面的经验。
制作软件有一般原则,但我想在这里,在这个简短的回答中,我可以给你一个可以应用的概念。软件是域的表示(例如,银行软件用于定制金融系统,或者雷达软件用于定制雷达检测的思想和原理)。因此,软件就像一个理论:它完全符合您的领域的当前知识,允许推理和扩展。如果有更多的知识可供使用,理论应该扩展,完善或更加通用以适应这种新知识,同时仍然对以前的知识有效。
因此,所有关于理论的概念都适用:
因此,软件应该是简约的,但不是太多,美观但实用。
在实施这些指示时,我建议您留出时间学习您的域名。你无法对你不理解的东西进行建模。学习基础知识,从简单的东西开始,然后逐步完善它们。你偶尔会看到一些东西“感觉”在错误的地方。问问自己的问题,如