我感兴趣的是每个方法或类的平均行数。编程语言 JAVA ,它是 Android 项目。
我知道没有具体的数字,但我对 良好的编程习惯 感兴趣?
编辑:例如在Android中我有10个按钮(3个用于操作栏,7个用于一周中的每一天,因此我可以快速选择一周中的某一天并获取相关信息等等,关于应用程序是什么并不重要)只有这种“代码类型”需要~100行代码(每个按钮我需要至少10行代码才能初始化< / strong>并设置 onClick监听器),有没有办法将其缩小一点?
someButton = (Button) findViewById(R.id.button);
someButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do something
}
});
答案 0 :(得分:4)
此类型的大多数分析大约是cyclomatic complexity,而不是行数,这可能会根据每行的复杂程度而改变。例如你可以将整个班级放在一行,但这不是一个好习惯。
我使用代码分析器(Intellij中的代码分析器),如果它混淆了分析器,它可能会使代码混乱。 (它是一种自动代码审查的形式)它有很多可以检查的方法和类度量标准,但我认为它们没有用。
答案 1 :(得分:3)
由于我们正在谈论Java,我们隐含地讨论OOP。
因此,您首要关注的是创建具有低耦合度的高度内聚类。类中方法或方法中的行数不是两者的指标。然而,这是实现两者的副产品。如果您考虑到这些原则,那么您的课程更有可能具有简明明确的方法,其唯一目的就在于此。
换句话说,不要追求指标,专注于良好的设计和原则。
如果你想要一些确凿的事实,那么this question会跟随类似的轨道。
答案 2 :(得分:1)
大多数情况下,答案取决于屏幕的垂直尺寸。从古代开始,隐藏着将整个功能保持在一个屏幕的规则,其中功能名称,开放和关闭括号在单独的行上。所以这个规则在每个功能上留下大约20行,使用流行的80x25屏幕。如果您主要在控制台上编程并且您的IDE名为 vi ,则此规则仍然有效。但我认为此规则对其他环境和更高分辨率仍然有效。
还有其他衡量一个函数复杂度的方法,长度为1但局部变量的数量也是另一个强有力的指标。如果你有太多,你应该考虑重构。
但你的问题是要求就某种功能提出建议。 有些情况下会忽略这些规则。例如,具有大量case语句的函数(例如automatas)可以保持很长时间。
在您的情况下,设置(初始化)GUI是具有长功能的有效案例。但是,如果你坚持使用一个小而易于维护的函数,你可以在这个方法之外移动匿名内部类并给出它们自己的名字。然后每个按钮最终将只变为2行码。或者,您可以对每个按钮使用Extract Method,并在单独的功能中创建它们。
答案 3 :(得分:0)
据我所知,它与行数没有任何关系。每种方法都应该执行不同的操作,重点应放在良好的设计上。