由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 程序速读指南
相关主题
准备面试一个java-based position,有什么书推荐一下?A question
构建一个快速查询字典(数据结构题)?Google员工给的api talk
typedef struct的问题bad news:Oracle wins, Google loses in copyright ruling on J (转载)
从SGI和Nokia的失败俯瞰本版几位名ID的心路历程选择 WCF 还是 ASP.NET WebApi
Oracle v Google on Javag++ problem!!!!
Google confirms next Android version won’t implement Oracl (转载)[转载] CS Interview question
大家在linux下面用什么C++的IDE呢?good C++ open source project?
How difficult is it to write your own sprintf ?JAVA generic programming 是怎么实现的?
相关话题的讨论汇总
话题: 速读话题: 程序话题: api话题: 代码话题: abc
进入Programming版参与讨论
1 (共1页)
c*****t
发帖数: 1879
1
读代码是每个程序员都必须做的事。因为我们经常会在几个月以后
重新回到自己的源码进行修改或者使用,或者使用同事和 library
的程序。快速的理解代码是一个很重要的技能。
另外,写程序的一个重要指标就是易读易懂,容易维护。而这个指
标的根本原理就是能够速读。所以,理解速读的原理和方法,是提
高编程能力的途径。
这里介绍的就是提高速读的方法。速度读的和编程一样,有不同的
层次。高层的,是 module interface / API。中间的是 method 等,
底层的这是某 function 内部的具体实施。
对于 API 层次,常用的就是 MvC,DIP/IoC 等 pattern 。这种情
况下关键就是注意命名。比如 xxxManager, xxxView, xxxControler,
xxxImpl,xxxxFactory, Ixxx,xxxWrapper,xxxBridge,xxxAdapter
等。这样,不需要读代码,就可以理解大概的功能。同样写程序的
时候,也使用类似的命名能够帮助迅速的理解代码。熟悉不同的 pattern
是迅速理解 API 的途径。
对于 method,
g*****g
发帖数: 34805
2
很有见地,不过m_var 这样的命名方式是MFC风格的,
java里面不推荐。另外
if(..) {
}
这是Sun推荐的Java编程风格,我个人觉得很好,可以省下大量
的空行。对于编程风格问题,最好的办法是整个team用同一个
编辑器,同一个格式化模板,自动的commit前格式化。

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

c*****t
发帖数: 1879
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前格式化。

g*****g
发帖数: 34805
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 :)

c*****t
发帖数: 1879
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();
: 都不用脑,不用多想名字,也很清楚。

g*****g
发帖数: 34805
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

c*****t
发帖数: 1879
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里用用就行了。

1 (共1页)
进入Programming版参与讨论
相关主题
JAVA generic programming 是怎么实现的?Oracle v Google on Java
这个同学很神Google confirms next Android version won’t implement Oracl (转载)
这道题有什么好思路?大家在linux下面用什么C++的IDE呢?
STL里面#include的问题How difficult is it to write your own sprintf ?
准备面试一个java-based position,有什么书推荐一下?A question
构建一个快速查询字典(数据结构题)?Google员工给的api talk
typedef struct的问题bad news:Oracle wins, Google loses in copyright ruling on J (转载)
从SGI和Nokia的失败俯瞰本版几位名ID的心路历程选择 WCF 还是 ASP.NET WebApi
相关话题的讨论汇总
话题: 速读话题: 程序话题: api话题: 代码话题: abc