首先推荐几本书:

重构——重构改善既有代码的设计

编写可读代码的艺术

编程珠玑

代码大全(我没读过,但很多人推荐)

具体的做法:

要把代码分割成细粒度的函数,然后给这些函数起一个恰当的名字,这是最简单最有效的做法。写代码的时候可以先写成一个函数,然后在过程中,不断地把「不相干的子问题」抽取出来,变成一个单独的函数。

做到极致的效果就是,每个函数,别人只要看到名字和参数列表,就能知道这个函数是干什么的,而且可以自己实现出来。这样一来,代码的复杂度显然就降了下来;读代码的时候,其实大部分时候都是在读函数调用,都是在了解算法的逻辑,而不是细节。

举个简单的例子:

SegmentFault 的投票功能,当用户点 Up 的时候就加一票,点 Down 就减一票;而如果用户已经 Down 了,那么点 Up 的时候要加两票;不好的代码是这样的:

vote_action = function (old_vote, new_vote) {

var score = get_score();

if (new_vote !== old_vote) {

if (new_vote === 'Up')

score += (old_vote === 'Down' ? 2 : 1);

else if (new_vote === 'Down') {

score -= (old_vote === 'Up' ? 2 : 1);

else if (new_vote === '')

score += (old_vote === 'Up' ? -1 : 1);

}

set_score(score);

};

好的代码是这样的:

vote_action = function (old_vote, new_vote) {

var vote_value = function (vote) {

if (vote === 'Up')

return +1;

else (vote === 'Down')

return -1;

else

return 0;

};

var score = get_score();

score -= vote_value(old_vote); // remove the old vote

score += vote_value(new_vote); // add the new vote

set_score(score);

};

PS: 例子引自「编写可读代码的艺术」

Logo

低代码爱好者的网上家园

更多推荐