avatar
c*t
1
读代码是每个程序员都必须做的事。因为我们经常会在几个月以后
重新回到自己的源码进行修改或者使用,或者使用同事和 library
的程序。快速的理解代码是一个很重要的技能。
另外,写程序的一个重要指标就是易读易懂,容易维护。而这个指
标的根本原理就是能够速读。所以,理解速读的原理和方法,是提
高编程能力的途径。
这里介绍的就是提高速读的方法。速度读的和编程一样,有不同的
层次。高层的,是 module interface / API。中间的是 method 等,
底层的这是某 function 内部的具体实施。
对于 API 层次,常用的就是 MvC,DIP/IoC 等 pattern 。这种情
况下关键就是注意命名。比如 xxxManager, xxxView, xxxControler,
xxxImpl,xxxxFactory, Ixxx,xxxWrapper,xxxBridge,xxxAdapter
等。这样,不需要读代码,就可以理解大概的功能。同样写程序的
时候,也使用类似的命名能够帮助迅速的理解代码。熟悉不同的 pattern
是迅速理解 API 的途径。
对于 method,
avatar
g*g
2
很有见地,不过m_var 这样的命名方式是MFC风格的,
java里面不推荐。另外
if(..) {
}
这是Sun推荐的Java编程风格,我个人觉得很好,可以省下大量
的空行。对于编程风格问题,最好的办法是整个team用同一个
编辑器,同一个格式化模板,自动的commit前格式化。

【在 c*****t 的大作中提到】
: 读代码是每个程序员都必须做的事。因为我们经常会在几个月以后
: 重新回到自己的源码进行修改或者使用,或者使用同事和 library
: 的程序。快速的理解代码是一个很重要的技能。
: 另外,写程序的一个重要指标就是易读易懂,容易维护。而这个指
: 标的根本原理就是能够速读。所以,理解速读的原理和方法,是提
: 高编程能力的途径。
: 这里介绍的就是提高速读的方法。速度读的和编程一样,有不同的
: 层次。高层的,是 module interface / API。中间的是 method 等,
: 底层的这是某 function 内部的具体实施。
: 对于 API 层次,常用的就是 MvC,DIP/IoC 等 pattern 。这种情

avatar
c*t
3
SGI STL 里大量使用 _M_。至于 Sun,它自己 JDK 里面的 code 就很糟糕。
没有固定的 naming convension,乱七八糟的 indentation,scope (private
vs default 等)。有些地方使用 v_, _v, 等。我不喜欢 _ 因为 C 里面 _
和 __ 属于 system function 。最好不要养成习惯使用 _。
我觉得使用 prefix/suffix 比较好。Eclipse/IDE 对此有特殊支持,可见
还是比较重要的。
至于
if (..) {
}
很多人喜欢这种风格,俺就是不喜欢 hehe :)

【在 g*****g 的大作中提到】
: 很有见地,不过m_var 这样的命名方式是MFC风格的,
: java里面不推荐。另外
: if(..) {
: }
: 这是Sun推荐的Java编程风格,我个人觉得很好,可以省下大量
: 的空行。对于编程风格问题,最好的办法是整个team用同一个
: 编辑器,同一个格式化模板,自动的commit前格式化。

avatar
g*g
4
SGI, STL还是C/C++,用在Java上不合适,JDK的代码我读的不多,
但像Spring的code就写得很好,你可以看看。至于indention,我说了,
必须用formatter,否则不可能一致的。除了static final,不推荐用
_在任何变量上,比如gameList这样一个变量很干净,game_list就很C。
声明变量的时候经常直接就如
GameList gameList = new GameList();
都不用脑,不用多想名字,也很清楚。

【在 c*****t 的大作中提到】
: SGI STL 里大量使用 _M_。至于 Sun,它自己 JDK 里面的 code 就很糟糕。
: 没有固定的 naming convension,乱七八糟的 indentation,scope (private
: vs default 等)。有些地方使用 v_, _v, 等。我不喜欢 _ 因为 C 里面 _
: 和 __ 属于 system function 。最好不要养成习惯使用 _。
: 我觉得使用 prefix/suffix 比较好。Eclipse/IDE 对此有特殊支持,可见
: 还是比较重要的。
: 至于
: if (..) {
: }
: 很多人喜欢这种风格,俺就是不喜欢 hehe :)

avatar
c*t
5
我不在争 class/function name。我在说 instance variable name
需要 prefix/suffix。我一般用 m_。这对查找很方便,而且不容易

setAbc (int abc)
{
abc = abc;
}
的错误。我以前不是提到某人的程序里 N 多类似的问题么,俺最后
没办法自己写个。而且 m_ 比 this. 简单多了 :) 这对 reflection
也有好处。如果你用 script,那么 abc = "100" 是 call function
还是直接上 variable?你可以争议 abc 是 private,setAbc 是
public。实际上,很多 script 直接 call setAccess(true),因为
这样可以 optimize reflection call,所以直接 private/public
并没有太大意义。有些程序特意直接让 script 读写 private variable,
(比如 Xml Parser),而 Java 里只看到 p

【在 g*****g 的大作中提到】
: SGI, STL还是C/C++,用在Java上不合适,JDK的代码我读的不多,
: 但像Spring的code就写得很好,你可以看看。至于indention,我说了,
: 必须用formatter,否则不可能一致的。除了static final,不推荐用
: _在任何变量上,比如gameList这样一个变量很干净,game_list就很C。
: 声明变量的时候经常直接就如
: GameList gameList = new GameList();
: 都不用脑,不用多想名字,也很清楚。

avatar
g*g
6
Eclipse有这个warning, 打开就是了。
m_是比this.简单,但是在IDE里打起来反而慢。
何况this只在setter里用用就行了。

【在 c*****t 的大作中提到】
: 我不在争 class/function name。我在说 instance variable name
: 需要 prefix/suffix。我一般用 m_。这对查找很方便,而且不容易
: 出
: setAbc (int abc)
: {
: abc = abc;
: }
: 的错误。我以前不是提到某人的程序里 N 多类似的问题么,俺最后
: 没办法自己写个。而且 m_ 比 this. 简单多了 :) 这对 reflection
: 也有好处。如果你用 script,那么 abc = "100" 是 call function

avatar
c*t
7
其实争这个没必要了。以前(Eclipse 3.1 以前),Eclipse 没有这种
highlight,所以看 code 没 prefix/suffix 很费劲。现在有 highlight
instance variable 就不是太大问题。
当初用 NetBeans 2.0 的时候(没 refactor),我处理某同事的 code,
那个叫累。不单他采用 a, b, 等 instance variable,而且 declaration
是在 class 中间(不是开头也不是结尾),那个差点没气死。好在他离
开了,再改下去要疯掉。另外那个出现 abc = abc 的问题也挺讨厌。问题
是写这程序的家伙的东西出现 1w 多 warning 。
至于其它语言,如果没有合适的 highlighter,prefix/suffix 还是
相当重要的。

【在 g*****g 的大作中提到】
: Eclipse有这个warning, 打开就是了。
: m_是比this.简单,但是在IDE里打起来反而慢。
: 何况this只在setter里用用就行了。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。