论坛首页 综合技术论坛

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

浏览 18329 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-11-23  
引用
3. 代码组织太差,比如出现行数过百的大函数,或者强行把不相关的代码写在一个类中。


有这点帮助就够了。你限制函数最大为10行试试看
0 请登录后投票
   发表时间:2005-11-24  
snomile 写道
wctang 写道
第 3 點其實也是可以的,只要團隊肯嚴格配合 (如,限制函式/程式行數...)

程式撿查不能代替編程的技巧,重點還是編程者的素質,但自動且適當的撿查可一定程度定出個程式品質的下限。

還有,我不覺得代碼縮進"等"是個"細小的風格問題",這對編程的順暢和程式的品質有相當大的影響,程式排版也不只是代碼縮進而己,做得好可以避免很多不必要的小錯誤。


我也认为如此,就像你说的,重点还是编程者的素质,代码检查能起到的作用太小。
所以我才希望有人能举出真实的例子,究竟在什么情况下,不使用代码检查会造成严重的问题。


所有的问题都能被归结为“素质”问题,哪里还有什么代码检查的份。

很多时候,你需要的是转变看问题的角度,
我认为代码检查,就是所有人统一编码风格,这种风格并不能保证使你的代码更好些,不过经验证明好的代码通常具有这样风格,在此基础上使开发团队统一步调,避免不必要的细节沟通;因此,它是一种工具,或者一种渠道,来告诉你,很可能你的代码存在某种问题,所以导致乐某种结果。
比如,一个class的抽象关联超过7个,这样的警告很可能预示着你的class肩负太多职责。
你完全可以忽略这些东西,代码仍然能工作,项目仍然可以成功。
只是你不知道,如果你不忽略这些东西,让代码更容易阅读,更容易修改和维护,让开发过程更具乐趣,你可能能够更容易更快捷地完成所有工作。
仅此而已。所以,你需要自己尝试,整个过程充满乐乐趣和艰辛。
很多时候,也是看你追求的是什么。

我见过最差的一个变量命名是:l1
在这里似乎能明显区分这2个字符,但是在eclipse中,如果不仔细看实在难以分辨,我第一眼就认为它是数字“11”,当时我看到一个方法的参数是一个自定义对象,而调用这个方法的地方却传递乐这个“l1”,就想,嘿,这小子挺牛啊,能让java编译通过这样的代码,后来发现“l1”是一个变量名,就更奇怪乐,居然能定义数字开头的变量名。

再说,什么叫“严重问题”?一般出乐问题,我们都提升为“人品问题”,调侃上好几天,编上口头禅什么的,不知道算不算严重。
(当然,实际上针对这个问题的“人品问题”基本没有,因为checkstyle就是每天吃饭一样平常基本的事情)
0 请登录后投票
   发表时间:2005-11-24  
swing兄举的例子挺典型的,我也见过有人写这样的代码,确实比较让人难受,呵呵。
我对代码检查的看法是:以较低的代价解决较低层次的问题。
根据各位的回帖,看来我的感觉还是正确的。代码检查一定要实施,但是不值得在上面花费太多的精力。
0 请登录后投票
   发表时间:2005-11-24  
噢,对了,swing兄还能举出类似前面我举出的例子吗?在那种情况下,代码检查有无法替代的作用,这时候必须实行代码检查。

引用
我唯一观察到的有真实价值的代码风格检查出现在这种场景中:客户在合同中即要求开发方提供全部最终源代码。此时的源代码上可能需要加入公司的统一标识、版本、作者等一些版权信息,同时整齐的代码会显得更“专业”一些。
0 请登录后投票
   发表时间:2005-11-25  
如果你维护过这样一个类,该类使用超过7年,其中某个核心方法超过5k行,同时又有超过10个以上的人对这个类做过修正,你对代码格式检查的价值就没有什么存疑了!
0 请登录后投票
   发表时间:2005-11-28  
有标准和没标准是两码事,而标准过于严格与合适又是一码事. 代码格式和编程习惯是两样不同的事情.我鼓励每个人有自己的编程习惯,这样才能更好的对比与学习,才能进步.而同时,我强调team中必须有统一的编码格式,这样才能有效地进行代码在人之间的移植和流动.
0 请登录后投票
   发表时间:2005-11-29  
一个Team写出来的代码就应统一风格,代码格式化,变量命名,看似小的东西,却关系到team之间的交流成本,维护成本。
应该重视。所谓“细节决定成败”还是有一定的道理的。
像我见过一个函数,里面的命名是
i,ii,iii,一直到8个i。后来只有重新写过。当然这比较极端了。
从产品的角度,一个team的东西应该是一致的。
就像企业的形象一样,team也有team的形象。
0 请登录后投票
   发表时间:2005-11-29  
说点可能是题外话,
我看到楼主说格式代码是为了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 请登录后投票
   发表时间:2005-11-30  
多谢前面的讨论。
我的问题的确是从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 请登录后投票
   发表时间:2005-12-01  
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是个美丽的童话,不太可能的。

    不清楚楼上为什么不敢merge. 对于基于文本的代码文件, merge并不会有什么问题啊. Clear Case对于代码文件,如果多个修改在不同的标识行,完全可以自动merge的. 如果对于相同的标识行的冲突改动, 它也会以图形比较的方式提供merge的参考. 另外,Merge一个更重要的参与者是人, 完全依赖工具自然是不可能,因为谁也不能保证不同标识行中的逻辑冲突(也许代码在不同标识行,物理上似乎不冲突,不过merge工具是不能辨别逻辑冲突的). 所以对于XP中的代码共享,每个人都可以修改,我是不太认可的. 不过我这样说,并不是赞成楼上说merge只是美丽童话. 代码格式化对于自动化merge有一定帮助,但从来不代表代码格式化是给Merge使用的.所以楼主将这两个话题放在一起讨论,有些牵强.
0 请登录后投票
论坛首页 综合技术版

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