[转载]改良程序的11技巧
有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点,程序你只写一次,但以后会无数次的阅读。当你第二天回头来看你的代码时,你就要开始阅读它了。当你把代码拿给其他人看时,他必须阅读你的代码。因此,在编写时多花一点时间,你会在阅读它时节省大量的时间。
让我们看一些基本的编程技巧:
1.尽量保持方法简短
2.永远永远不要把同一个变量用于多个不同的目的
3.使用自描述的变量名和方法名
4.尽可能的把变量定义在靠近使用它的地方
5.拒绝神秘数字
6.友好的对待你的语言
7.不要逆常规而行
8.警惕过早优化
9.积极重构测试过的程序
10.不要过度沉迷于技巧
11.通过习例学习新知
现在,让我们把每个小点展开来详细讲一下。
1. 尽量保持方法简短
尽管很多人都遵循这个规则,但它仍然非常的重要。你写的方法要始终能在一个屏幕里放得下。如果你需要去滚动屏幕,这会分散你的注意力,而且你看不到整个的上下文。最佳长度是5-20行,这根据你的情况而定。当然,getters/setters 通常是一行代码的方法,但与其说它们是真正的方法,不如说它们只是存取工具。
2. 永远永远不要把同一个变量用于多个不同的目的
一个变量应该始终只为一个目的服务。通过使变量常量化(C++里的const, Java里的final),使得编译器能够优化编译,而且使你的代码醒目表达这个变量是不能改变的,你的程序的可读性会变得更好。
3. 使用自描述的变量名和方法名
你的代码应该,对于任何人来说,只要看一眼就能知道是干嘛的。尽量不要用简写方式,除非有特殊的习惯,就像下面的:
src - source
pos - position
prev - previous
如果你认为描述性的名称并不是那么有价值,请对比一下n, ns, nsisd 和 numTeamMembers, seatCount, numSeatsInStadium。
4. 尽可能的把变量定义在靠近使用它的地方
盖房子时,你可不希望把锤子放到别人的院子里。你希望把它们放的离手头越近越好。定义变量也是同样的道理。
int foo = 3;
int bar = 5;
// 一大段使用“bar”的代码,
// 但没用到“foo”
// ...
baz(foo);
int bar = 5;
// 一大段使用“bar”的代码,
// 但没用到“foo”
// ...
int foo = 3;
baz(foo);
il < 4384
inputLength < MAX_INPUT_LENGTH
for (int i = 0; i < 5; i++) {
System.out.println("Hello world!");
}for i in (0..5)
puts "Hello world!"
end
5.times { puts "Hello world!" }
当我第一次读到有关设计模式的知识时,我觉得我找到了圣杯。这些精心设计的思想作用显著,它能使你的设计易于理解,因为你可以简单的说”我使用的是‘观察器模式’“,而不用从头到尾的解释一遍。那么,有问题吗?一切看起来都这么自然、简单,你开始不论在哪都使用设计模式。为什么不把这个类做成singleton呢?干嘛不去再创建一些工厂类呢?
于是一个80行就能写完的脚本,你最终使用了10个类,15个接口,外加一大堆范式和标记符。97%的代码不做任何事情。设计模式是一种十分有用的用来简化你的设计的工具,但这不意味着你该在所有能用到的地方都用它。你应该用它们,但不能滥用。
11. 通过习例学习新知
编程是一种学习新知的过程。当你学到了新的程序库或新语言,你可能会迫不及待的丢掉旧的代码,用你新学到的东西重新写一遍。有很多的理由都能说明你不该这么做。
往现有的应用里增加新的类库或框架同属于这种情况。就说你写了一个Javascript的web应用,期间,你发现了jQuery。现在你突然急切的想丢到你的Javascript程序,重新用jQuery写,尽管你还从来没用过它。
最好的方式是你先用jQuery写一些简单的例子,通过这种方式把你在应用里将要用到的知识都学会。需要AJAX?在你的项目之外做一些小例子,当完全弄懂了后,丢掉例子,应用到你的产品里。
[解决办法]
so long...
[解决办法]
10.不要过度沉迷于技巧
不要过度沉迷于楼主的"改良程序的11技巧"![[转载]改良程序的11技能](http://img.reader8.net/uploadfile/jiaocheng/20140132/2611/2014012620114335207.gif)
[解决办法]
被推荐了两次
[解决办法]![[转载]改良程序的11技能](http://img.reader8.net/uploadfile/jiaocheng/20140132/2611/2014012620114335208.gif)
[解决办法]
这似乎离大部分的人很远很远。