Nie*_*Bom 1 formatting refactoring coding-style
这是关于编码风格的跨语言问题.
我必须使用很多代码,这些代码在if语句或for循环中有很长的代码块,有时有数百行.代码是程序性的.
代码如下
if(condition){
//hundreds of lines of code
}else if{
//hundreds of lines of code
} else {
//hundreds of lines of code
}
Run Code Online (Sandbox Code Playgroud)
如果我有一段时间没有看到它,我在浏览这段代码时遇到了麻烦,因为我不得不来回滚动来检查我所处的语句的哪个分支,或者我是否在循环中,或循环迭代器是什么叫做.
我的预感是将一长串代码放在函数中,并在语句的分支内或循环内调用它们,因此循环和树如果更短,因此更具可读性.我创建的函数是合理的代码 - 孤岛,而不仅仅是随意删除当前的代码.
但是,这是我的问题:这是一个好主意吗?或者在if语句或for循环中包含数百行代码并不是一种糟糕的编码风格?我不是一个真正有经验的程序员,但我很欣赏干净的代码:)
谢谢!
补充:数百行代码在大多数情况下都不重复.我理解并尝试坚持DRY原则.
Chr*_*isF 11
能够在一个屏幕上看到整个方法通常是个好主意.如果你必须向上和向下滚动太多(有些人会争论)那么你就有可能丢失信息.
所以一般来说你提出的建议是个好主意.虽然您不需要将所有代码放在一个分支中的一个方法中.可能会有重复的代码段,因此您可以将其分解如下:
if(condition){
CommonMethod();
SpecificMethodA();
}else if{
CommonMethod();
SpecificMethodB();
} else {
CommonMethod();
SpecificMethodC();
}
Run Code Online (Sandbox Code Playgroud)
举个例子.虽然重构的确切性质完全取决于您的代码.
根据你的说法,我将这些块的内容重构为单独的过程(根据需要给它们提供有用的名称和传递参数).
if(condition){
DoA();
}else if{
DoB();
} else {
DoC();
}
procedure DoA() {
//hundreds of lines of code
}
procedure DoB() {
//hundreds of lines of code
}
procedure DoC() {
//hundreds of lines of code
}
Run Code Online (Sandbox Code Playgroud)
当然,在DoX程序中也可以这样做.