你好,Javarashevites!本文是对 Robert Martin 所著《Clean Code》一书的评论。我们将一起研究改进和优化代码的方法,最后,一个小但有趣的任务等待着您。
每天,当我们打开代码编辑器时,我们都会遇到许多类、函数和变量。最好的选择是,如果这是您从头开始编写的代码,编写一次,其中只有几行,您独自处理它,没有编辑,也没有客户的进一步支持。但!正如实践表明的那样,是的,我想你自己也明白这种情况不会发生。基本上,我们必须以某种方式与团队成员进行交互,维护“Hindu”代码,并将产品解析为数百万行。我经常听到我的培训同事这样回答:“这段代码是我写的,我不会向任何人展示它”,但是当我在 Help for Help 上看到此类代码的请求时,需要很长时间时间(有时真的很长一段时间)去深入研究和理解这个人想告诉我什么,我什至想说“擦掉并重新重写”!感谢那些愿意帮助你、正确写作的人的时间和精力,如果你不知道如何做,学习永远不会太晚。Robert Martin 的书在这种格式的书籍中脱颖而出,因为它包含许多 Java 示例。这对我来说可能有点狂热,但它是用 OOP 风格编写的,即以零件和章节的形式编写。这本书易于理解和阅读,很容易在旅途中或晚上睡前阅读。Clean Code 分为 3 部分。在第一部分中,我们被要求浏览本书的理论,了解设计模式和良好礼仪的规则。第二部分邀请我们练习重构和写作,第三部分是示例中代码“味道”的最终总结。嗯,作者涉及了许多主题,您主要需要 Java Core 的知识,但也有专门介绍 JUnit 单元测试、Log4j 日志记录、设计中最简单模式的知识的部分(但正如我上面所说,没有其中很多,所有难以理解的内容都可以成功地用谷歌搜索,是的,并在 JavaRush 课程中对其进行分析)。本书各章节之间没有关联,您可以顺利地从您喜欢的章节开始阅读。我从书中学到的主要思想的简要总结。我将感谢您对它们的评论,您可以在评论中分享您自己对这些陈述的看法。
正如所承诺的,这对您来说是一项小而容易的任务。该程序必须根据给定的数据计算肥胖指数。在注释中写下代码中的错误数量和修复。附:如果使用正确,该代码可以正常工作并执行其功能。
1.评论==邪恶。
在大多数情况下,注释是我们试图掩盖糟糕代码的拐杖。在某些情况下,如果存在持续的代码重构,他们还会谎报方法或变量的用途。2.注释代码,死代码。
将这些代码留在您的应用程序中无异于垃圾。未使用的代码会随着时间的推移而积累,并干扰应用程序的清洁度,请不时检查此类模块的代码。3. 方法、类和变量的标题。
值得单独撰写文章来讨论这个主题。不要偷懒,写下可以说明其用途的名称。了解拼写标题的一些标准。该主题是详细研究的“必备”主题。4. 每个方法和变量在类层次结构中都有其位置。
通常,类可以具有变量和方法(静态和非静态)、构造函数、嵌套类和内部类以及枚举。总之,信息量很大,需要确定每个人在班级中的位置。如果你看一下java核心类,你会发现结构是清晰的,我们可以看到每个部分在它的位置,当然在你的项目中它可以在项目内改变,但不能在每个类中改变。对于我自己,我定义了以下构造结构:在类的开头,我有静态变量,然后是对象变量+枚举(如果存在)。在变量之后,我定义类构造函数。然后我编写处理该类的方法。在方法之后我编写 getter 和 setter。最后我有内部课程。您可以使用我的结构或在评论中编写您自己的结构。5. 方法的抽象级别。
对我来说,这是第一大发现。每个方法仅包含一个抽象级别的运算符。您不应该将多级操作混合在一起。6.错误处理。
Checked 和 Unchecked Exception,在项目中使用哪个更好(你觉得怎么样?写评论)?我是checked 的支持者,但这本书有助于从外部看待Unchecked Exceptions。事实上,未经检查的异常不会破坏方法签名,特别是考虑到异常一次“刺穿”多个层。最小的变化带来的不便导致在捕获它之前重新定义整个方法链,这在很多情况下对于开发来说是极其不方便的。7. 代码格式化。
格式正确的代码不仅清晰,而且可读性强。你会立即了解括号和里面的动作。使用 if, else 结构中的条件示例,您不应该将所有内容写在一行中,最好移动长链。8. 条件的否定。
尽量避免在条件下否认,这更多的是心理因素,我们的大脑不能很好地感知否认,是的!之前的表达可能不会被注意到。例如,否定 if (!condition.isTrue) 更好地重写该方法,它会让像这样 (condition.isFalse) 更容易9. 函数必须执行一项操作。
如果您的方法执行许多操作,则将它们划分为单操作方法。这些方法非常容易支持、易于测试,并且在必要时可以替换或删除。10.不要重复自己的话。
不要重复代码 DRY(不要重复自己)。这是将显着减少代码的基本规则之一,请记住这一点。尝试将所有重复的代码放入一个单独的函数中。当然,我们可以更多地谈论DRY、KISS(Keep it simple Stupid)、SOLID、YAGNI。这些术语对于理解和设计至关重要。它们值得单独写一篇文章,也许我会再次写它们,因为本文专门回顾《干净代码》一书。//Weight in kg.
//Height in metres.
public class sample {
public static void main (String[] args) {
humanIMB humanIMB = new humanIMB(80,1.52);
System.out.println(humanIMB.Result());
}
}
class humanIMB {
public double W; //Weight Human
public double H; // Height Human
private static double imb;
public humanIMB(double w, double h) {
W = w;
H = h;
imb = W / (H * H);
}
public double takeW() {
return W;
}
public void putW(double w) {
W = w;
imb = W / (H * H);
}
public double takeH() {
return H;
}
public void putH(double h) {
H = h;
imb = W / (H * H);
}
public static double takeImt() {
return imb;
}
public static String Result() {
String string = null;
if (imb >=18.5 & imb <25) {
string ="Норма, ты в форме!";
}
if (imb >=25 & imb <30) {
string ="Предожирение. Эй, поосторожнее с пирожными ";
}
if (imb >=30) {
string ="Ожирение. SCHWEINE! Хватит жрать, иди на треню!";
}
if (imb <18.5) {
string ="Дефицит массы тела. В модели решил переквалифицироваться?";
}
return string;
}
}
GO TO FULL VERSION