diff --git a/notes/代码可读性.md b/notes/代码可读性.md index ab41849d..5d40b41b 100644 --- a/notes/代码可读性.md +++ b/notes/代码可读性.md @@ -54,7 +54,7 @@ 排列整齐的注释: -``` +```java int a = 1; // 注释 int b = 11; // 注释 int c = 111; // 注释 @@ -87,20 +87,20 @@ int c = 111; // 注释 尽量简洁明了: -``` +```java // The first String is student's name // The Second Integer is student's score Map scoreMap = new HashMap<>(); ``` -``` +```java // Student' name -> Student's score Map scoreMap = new HashMap<>(); ``` 添加测试用例来说明: -``` +```java //... // Example: add(1, 2), return 3 int add(int x, int y) { @@ -110,7 +110,7 @@ int add(int x, int y) { 在很复杂的函数调用中对每个参数标上名字: -``` +```java int a = 1; int b = 2; int num = add(\* x = *\ a, \* y = *\ b); @@ -122,13 +122,14 @@ int num = add(\* x = *\ a, \* y = *\ b); 条件表达式中,左侧是变量,右侧是常数。比如下面第一个语句正确: -``` +```java if(len < 10) if(10 > len) ``` if / else 条件语句,逻辑的处理顺序为:① 正逻辑;② 关键逻辑;③ 简单逻辑。 -``` + +```java if(a == b) { // 正逻辑 } else{ @@ -148,11 +149,11 @@ do / while 的条件放在后面,不够简单明了,并且会有一些迷惑 长表达式的可读性很差,可以引入一些解释变量从而拆分表达式: -``` +```python if line.split(':')[0].strip() == "root": ... ``` -``` +```python username = line.split(':')[0].strip() if username == "root": ... @@ -160,12 +161,12 @@ if username == "root": 使用摩根定理简化一些逻辑表达式: -``` +```java if(!a && !b) { ... } ``` -``` +```java if(!(a || b)) { ... } @@ -175,7 +176,7 @@ if(!(a || b)) { **去除控制流变量** 。在循环中通过使用 break 或者 return 可以减少控制流变量的使用。 -``` +```java boolean done = false; while(/* condition */ && !done) { ... @@ -198,7 +199,7 @@ while(/* condition */) { JavaScript 可以用闭包减小作用域。以下代码中 submit_form 是函数变量,submitted 变量控制函数不会被提交两次。第一个实现中 submitted 是全局变量,第二个实现把 submitted 放到匿名函数中,从而限制了起作用域范围。 -``` +```js submitted = false; var submit_form = function(form_name) { if(submitted) { @@ -208,7 +209,7 @@ var submit_form = function(form_name) { }; ``` -``` +```js var submit_form = (function() { var submitted = false; return function(form_name) { @@ -228,7 +229,7 @@ JavaScript 中没有用 var 声明的变量都是全局变量,而全局变量 在一个网页中有以下文本输入字段: -``` +```html @@ -237,7 +238,7 @@ JavaScript 中没有用 var 声明的变量都是全局变量,而全局变量 现在要接受一个字符串并把它放到第一个空的 input 字段中,初始实现如下: -``` +```js var setFirstEmptyInput = function(new_alue) { var found = false; var i = 1; @@ -261,7 +262,7 @@ var setFirstEmptyInput = function(new_alue) { - elem 作用域过大; - 可以用 for 循环代替 while 循环; -``` +```js var setFirstEmptyInput = function(new_value) { for(var i = 1; true; i++) { var elem = document.getElementById('input' + i); @@ -284,7 +285,7 @@ var setFirstEmptyInput = function(new_value) { 介绍性的代码: -``` +```java int findClostElement(int[] arr) { int clostIdx; int clostDist = Interger.MAX_VALUE; @@ -305,7 +306,7 @@ int findClostElement(int[] arr) { 以上代码中循环部分主要计算距离,这部分不属于代码高层次目标,高层次目标是寻找最小距离的值,因此可以把这部分代替提取到独立的函数中。这样做也带来一个额外的好处有:可以单独进行测试、可以快速找到程序错误并修改。 -``` +```java public int findClostElement(int[] arr) { int clostIdx; int clostDist = Interger.MAX_VALUE;