代码风格,是一件头疼的事情

2017-07-23 14:17:05 +08:00
 changnet

代码风格,不能没有。但是又没有对错,混用各种风格,非常头疼。

在游戏公司上班,现在用的框架常用是 C++作底层,Lua 作上层脚本。但是这个框架非常古老,我估计 10 年以上了。期间经历无数项目,无数人来来去去。代码风格混乱。

公司并没有严格的代码审核。每次新项目时,上头都是:这个功能之前的项目已经有了,就不用重新做了。重构这种东西,不存在的,时间才是最重要的。 然后实际做的时候又发现和现在的设定有点不一样,就继续在原文件上改。

加上个人的原因,我喜欢在函数的括号前后加一空格,但是另人都不加。 我是

void Player:SendPosition( int x,int y ); 

别人是

void Player:SendPosition(int x,int y); 

而且最近业余看点 egret 的东西,主要是 js,这就更令人崩溃了。js 的大括号是不换行的,而我之前写的 C++都是换的。已经写了 4 年代码了,而且自己业余写的一些东西,风格已经固定,不想再换了。但是不换,在各种语言中混着写感觉就像精神分裂一样。

9853 次点击
所在节点    程序员
72 条回复
hantsy
2017-07-23 19:06:42 +08:00
@k9982874 Google 定义了一套各语言的规范,对于 Java, 还提供了 Eclipse 和 IDEA 配置文件。

@cxbig @zhujinliang 不过嘛,IDE 是个头痛的事,每个人的习惯不一样, 项目没必要去要求所有人都使用一样的 IDE。

@feiyuanqiu 一般格式化也不是太大问题,即使不同的 IDE,也可以调整到基本统一。但对于有些特殊情况,比如 IDEA 支持 formater off/on 去保留一些 DSL 形式(可读性强)的 代码,不是所有 IDE 都支持。

@catror 对于一个团队来讲,合作一段时间后,代码应该只有一种风格,就是团队风格, 而代码的 Style 本来就是应该遵循一些公认的约定。

@misaka20038numbe 各语言都有不同的 Style,写 Java 的时候一般都是习惯 method 与 { 在同一行。 但 PHP 的 PSR (虽然 PSR 完全 Copy JSR 运作方式) 改变了这一行为, { 要求新开一行。https://github.com/hantsy/angularjs-zf2-sample/blob/master/module/Album/src/Album/Model/Album.php


@fytriht 说到缩进,想到了美剧硅谷中 Tab 和 Space 那一集。我写 Java 认同用 4 Space (我不喜欢 Google Java Style 中的 2 space ) 代替 tab, 以做到所有 IDE 显示统一。
Jakesoft
2017-07-23 19:21:58 +08:00
@k9982874 psr4 不是代码风格规范,psr1、psr2 才是。
coderluan
2017-07-23 19:26:02 +08:00
楼主去研究下工具格式化吧,都挺成熟的。

比如你用的 egret,如果是用自带的 vsc 改版编译器,那样直接改个参数就能改大括号位置。
feiyuanqiu
2017-07-23 19:38:14 +08:00
@hantsy google 选择 2 空格缩进是因为他们规定了行宽 80 的限制,缩进占用多了的话会导致代码很多折行
他们还建议少留空行,这样一屏幕能显示多一点代码...怎么感觉那群人都是用 vim 的...
shiroming
2017-07-23 19:48:48 +08:00
@kmahyyg pycharm 默认就够了 ctrl+alt+L
LioMore
2017-07-23 20:45:42 +08:00
代码规范很多,可以自己选一个

@changnet 楼主提到了 JavaScript

JavaScript 有 JavaScript Standard Style ( https://standardjs.com/)、XO ( https://github.com/sindresorhus/xo) 等
cxbig
2017-07-23 21:16:48 +08:00
@hantsy
我只是说我们公司的情况,这不是核心问题。
拿 PHP 来说,有 php-cs-fixer 这类的命令行工具,无论用什么 Editor 或 IDE 都行。其他语言多少也都有。

关键的是执行。如果公司不注重,不严格执行代码审查,或各种 CI 工具的自动代码检测,那么抱怨就没有意义。
底下的人你不服我、我不服你,上头再没个标准,只会越来越乱。
lusyoe
2017-07-23 21:36:31 +08:00
我觉得这东西公司内必须要统一个标准,这个通用的模板最好交给 QA 去做。然后让各项目组的 PM 推下去,开发人员遵守就是了。不规范的,在 review 的时候打回去就好啦,说到底规范是一回事,监督和执行才是关键的。。
wangxn
2017-07-23 23:00:25 +08:00
@feiyuanqiu Google 规定的行宽是 100 还是 128 来着,反正不是 80。
wangxn
2017-07-23 23:00:45 +08:00
100 或者 120。
feiyuanqiu
2017-07-23 23:13:25 +08:00
@wangxn 嗯 java 是 100,c++是 80
Tovcn
2017-07-24 01:05:36 +08:00
目前在写一个代码格式化项目,支持 C 和 C++
FrankFang128
2017-07-24 01:07:54 +08:00
你不用自动格式化工具吗?
bumz
2017-07-24 06:08:31 +08:00
别人是 `void Player:SendPosition(int x, int y);`
你是 `void Player:SendPosition( int x,int y ); `
araraloren
2017-07-24 08:34:50 +08:00
@Tovcn 格式化工具不是很多吗,用 clang-format 不就好了。。
woshixiaohao1982
2017-07-24 08:39:58 +08:00
@lusyoe 这玩意还要 QA 格式化工具就搞定了
woshixiaohao1982
2017-07-24 08:40:50 +08:00
搞这些形式主义都是扯淡,,一套 lint 格式化规则才是重点
allenx
2017-07-24 09:58:18 +08:00
你这种写法不符合英文习惯,void init(int x, int y);,括号后面不该加空格,逗号句号等后面才应该加空格。
jianyunet
2017-07-24 10:17:30 +08:00
l00t
2017-07-24 10:45:09 +08:00
多大点事。

工作这么些年来,见过的代码也多了,我觉得所谓代码规范中,排版是最不重要的。大括号跟在后面还是另起一行,这有什么影响吗?代码规范应当是规定一些更实际的内容。比如某些功能应当怎么写,某些操作要不要做保护,某些值要不要做校验,在什么地方校验。这类约定做好了能减少大量协作沟通时间。排版只是细枝末节而已,正常人又不会一行流,无非有各自偏好罢了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/377344

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX