Joh*_*ker 29 oop design-patterns
我试图找出是否就我们何时应该在代码中创建新方法达成共识.例如,如果我们要再次使用代码,那么我们应该只创建一个新的方法/函数(因此我们显然会减少使用的行),或者这样做是为了避免代码混乱.我已经编程很长一段时间但我真的只是进入并以相当随机的方式决定.
是否有任何设计模式或书籍可以解决这个问题?一个相关的问题是,我们是否应该只使用getter和setter方法在对象中设置参数.这会显然创建更多的代码,但会使事情更易于管理?对此有何见解?
Gra*_*ton 32
我认为没有针对此的具体设计指南.但是一些设计原则确实讨论了方法创建.
DRY(不要重复自己)是方法创建的指导原则.您可以在一个方法中对类似的逻辑进行分组,这样您就不会在代码中复制它们,从而使维护成为一场噩梦.
单一责任原则是另一个原则.它说你的班级或方法应该只做一件事.这是为了使方法尺寸变小.
Ita*_*vka 24
我认为编程是一门艺术.因此我把方法时,感觉对分裂他们,或者写一个新的.
也就是说,有一些拇指规则(不会否定我的直觉).
如果你有似曾相识(你写的代码似乎很熟悉),你可能会重复自己,这意味着你应该使用现有的函数/方法,而不是写一个新函数/方法.
不超过两个结构深
for(...)for(...)for(...)BAD
连续不超过一个循环(一个接一个).
lor*_*zog 14
一个有趣的观点,虽然与面向对象编程无关,但是在linux的编码风格指南中提出:
第4章:功能
功能应该简短而甜蜜,只做一件事.它们应该适合一两个屏幕文本(ISO/ANSI屏幕大小为80x24,我们都知道),做一件事并做得很好.
函数的最大长度与该函数的复杂度和缩进级别成反比.所以,如果你有一个概念上简单的函数,它只是一个很长(但很简单)的case语句,你需要为很多不同的情况做很多小事,那么拥有更长的函数是可以的.
但是,如果你有一个复杂的功能,并且你怀疑一个不太优秀的一年级高中生可能甚至不了解这个功能的全部内容,那么你应该更加严格地遵守最大限度.使用具有描述性名称的辅助函数(如果您认为它对性能至关重要,您可以要求编译器对它们进行内联,并且它可能会比您更好地完成它).
函数的另一个度量是局部变量的数量.他们不应该超过5-10,否则你做错了什么.重新考虑功能,并将其拆分成更小的部分.人类的大脑通常可以轻松地跟踪大约7种不同的东西,更多的东西,它会混淆.你知道你很聪明,但也许你想了解你在2周后所做的事情.
如果你的方法很长,那么将它们重新分解成较小的块是有意义的,即使这些块在其他任何地方都没有使用过.这将提高可维护性和可测试性.此外,通过这种方法,您可以允许其他开发人员更轻松地扩展您的代码,以防他们想要更改方法的某些职责,例如通过重载它.
至于getter和setter,它在某种程度上取决于你使用的语言.在某些语言中,这可能非常冗长.就个人而言,我只为公共财产提供吸气剂和制定者和/或如果更改财产涉及的逻辑不仅仅是设置/获取财产.