论坛首页 综合技术论坛

关于团队开发时,代码格式化的问题

浏览 18160 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-12-02  
凤舞凰扬 写道
不过我这样说,并不是赞成楼上说merge只是美丽童话. 代码格式化对于自动化merge有一定帮助,但从来不代表代码格式化是给Merge使用的.所以楼主将这两个话题放在一起讨论,有些牵强.


我想他是想表達,如果一個團隊對一份 code 有不同的格式化習慣,則到我手上就改成我的風格, commit 到 cvs ,到別人手上又改成他的風格,又 commit ,則 cvs 上的版本間差異就都是這些格式化的差異,反而無法突顯真正修改的地方,而這也造成 merge 時的困擾。
0 请登录后投票
   发表时间:2006-10-10  
注册了一段时间,这是第一篇(表情符号的插入在firefox不支持?)
我也是头痛merge两个人的修改才追踪到这篇的。。
一个类文件,nk行,我一比较发现满屏的冲突,都不知道从何下手了,
实际上它之加了几行字,只是我们的格式化风格不同,
难道就不能再比较之前,将cvs发过来的代码先就我本地指定的格式来一个格式化,然后再比较吗?
cvs客户端是不是可以先加一个这样的feature?
kabbesy 写道
多谢前面的讨论。
我的问题的确是从merge出发的,没想到引发到代码格式标准的应用讨论上去了
单就merge这点而言,代码标准也只能为这个神话做一层简陋的铺垫而已
cvs merge,依然有不少容易出错的地方

YinH 写道
说点可能是题外话,
我看到楼主说格式代码是为了merge,我自己认为merge是个美丽的童话,一些商业的版本控制软件,比如cc,在那里吹嘘自己的代码merge是如何智能,我觉得搞笑。
我觉得merge再智能,代码写得再标准,难道你就真的敢在多个人修改同一个代码文件的情况下对其进行merge吗?反正我是不敢。
所谓的branch等机制,我觉得也是在基于组件化的机制上进行的。比如,trunk中有a,b,c三个组件,我分出一个branch,这个branch加了d这个组件,同时改了c这个组件,那么,你trunk中最好只是修改ab两个组件,然后我branch merge回来,当然,我branch就不敢修改ab了,而你trunk也最好别修改c组件。否则。。。。我想代码出问题的可能性非常大。。。。
我不知道大家对这个的观点是如何的,总之我觉得完美的merge是个美丽的童话,不太可能的。
      
0 请登录后投票
   发表时间:2006-12-20  
merge是非常非常好用的功能,ClearCase还能记录着merge的历史,多次merge也不会乱。

有代码格式标准可以避免由于不同格式引起的merge的冲突。

一般来说,格式化代码应该是在保证你独占这段代码的时候进行,如果是需要merge的,见到不顺眼的格式也只能先忍一忍了。
0 请登录后投票
   发表时间:2006-12-20  
snomile 写道
swing 写道
冰云 写道
kabbesy 写道
冰云 写道
ant checkstyle task


强制所有人使用同一种style?
那还不如强制所有人使用同一种eclispe的style format格式文件呢。反正是可导入导出的


这需要自动化的。checktyle可以自动化。
如果靠人自己按ctrl+alt+f,有时候会忘记。
而checkstyle不光是检查format
还可以对一些java的编程习惯作提示,例如final static,变量习惯等
这对于一个team来说是必须的。
你需要先建立一个持续集成环境。如果有人break builds就发出提示


没错,搂住要听nimo的劝告,这可以人家血的教训积攒的经验。



能否请你代言一下是什么样的血泪教训?我现在对这个问题恰好较感兴趣,希望能与你好好讨论一下。

根据我的观察和感觉,大部分公司实施代码检查通常是一种管理行为,即促进团队形成的一种手段,通过强制统一的风格(类似军队、学生统一着装),潜移默化地促进团队的形成。
如果指望靠代码检查来增进代码的可理解性,这里有我的一点总结。造成代码难以理解的原因,按照重要性如下递减

1. 没有能反映真实情况的需求、用例、设计文档
2. 虽然有文档,但是设计太糟糕,造成代码结构混乱不堪。
3. 代码组织太差,比如出现行数过百的大函数,或者强行把不相关的代码写在一个类中。
4. 缺少必要的注释。
5. 变量名称错误,不能反映变量所代表的含义。
6. 变量名称不符合规范。
7. 代码缩进等细小的风格问题。

这几个问题,只有6和7能通过代码检查解决,但是6和7实在是不怎么重要。

我唯一观察到的有真实价值的代码风格检查出现在这种场景中:客户在合同中即要求开发方提供全部最终源代码。此时的源代码上可能需要加入公司的统一标识、版本、作者等一些版权信息,同时整齐的代码会显得更“专业”一些。

请Swing兄发表一下看法,在你的印象中代码检查在哪些真实的场景中发生了很大的作用?


对日外包项目1.5人月...
每人月2k-4K行

你用的项目如果加上检证人员人月数会不会升一倍?
0 请登录后投票
   发表时间:2006-12-22  
提一个看起来不很相关的问题,代码的review频度如何?
既然很少能做到真正的结队编程,我想review也是应该的
既可以增强团队交流,增加知识的快速交流,
也可约束一些不规范的行为,呵呵
0 请登录后投票
   发表时间:2006-12-22  
引用
2. 虽然有文档,但是设计太糟糕,造成代码结构混乱不堪。

“设计糟糕”是有征兆的,会在代码上有所体现。
引用
3. 代码组织太差,比如出现行数过百的大函数,或者强行把不相关的代码写在一个类中。

譬如说,用checkstyle强制每个文件不超过200行。
引用
4. 缺少必要的注释。

可读的代码不需要注释。
0 请登录后投票
   发表时间:2007-05-24  
。。。。。。YUHONGMIN 已经完全说到了点子上。 ss
0 请登录后投票
   发表时间:2007-05-26  
最郁闷的一次,我眼看着人家在我写的JSP页面里写java脚本,看着文档越来越膨胀(及其复杂),我心里那叫一个。

不过最后我没再接手那个页面,我曾告诉后来接手的人,重构。不过他们每人听,继续将就用着!
0 请登录后投票
   发表时间:2007-05-28  
如果楼主是担心没有说服力,那么不如要求大家都遵守 JDK 源代码的排版格式。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics