Chr*_*ris 8 refactoring abstraction coding-style function
我对"Spaghetti Code"的理解是一个代码库,它从一个代码块跳转到另一个代码块,没有逻辑和清晰的目的.最常见的罪犯似乎是GOTO声明.
我目前正在阅读/参考清洁代码:敏捷软件工艺手册的功能章节.虽然自己承认,作者对功能的大小非常严格.我理解保持功能小的想法,然而,他建议它们应该在5行左右.虽然Classes肯定变得更易读,但我害怕通过编写较小的函数来创建意大利面条代码.较小的函数似乎也无意中创建了更高的抽象.
代码在什么时候成为意大利面条代码?如何抽象是过于抽象?任何答案都会非常有帮助.
顺便说一句,我是Stack Overflow的长期追随者,虽然这是我第一次发帖提问,所以对我的帖子的任何建议也是受欢迎的.
非常感谢!
正如评论中已经说过的那样,没有绝对的规则.最后,您应该以提高代码的可读性为目标.但这并不是关于你的方法的长度.罗伯特马丁建议根据抽象程度对方法进行排序.抽象方法应该是你班级的顶层,方法越多,它应该越深.
另一个重要方面是方法名称.应该选择它以便明确该方法的作用!如果您明智地选择方法名称,则几乎不需要注释.例如,考虑一个if语句:
if(isValidAge(value)) {
...
}
Run Code Online (Sandbox Code Playgroud)
比...更具可读性
if(value > 10 && value < 99) {
...
}
Run Code Online (Sandbox Code Playgroud)
因为声明的意图变得更加清晰.因为你可以在第二个例子中添加评论.但是评论经常变得过时(罗伯特·马丁的书中还有一章关于这一点).我认为,这种编程方式导致了许多简短的方法.
很难选择合适的抽象级别.根据我的预测,从较低的抽象级别开始更容易.所以我可以先集中精力解决问题.当我以后需要更多抽象时,我仍然可以重构代码.TDD帮助很大!
希望这可以帮助 ...