关于注释

16年6月前我在一家互联网公司做技术经理。数据库命名格式,注释格式等我都写了相应的规则文档,要求程序员按照文档规则加注释。数据库里有哪些字段,程序里有哪些功能,大家可以很方便的获取到。

后来决定转行做游戏,6月辞职后去了一家游戏公司,做类似cok手游的。他们的服务端用go开发。程序里几乎没有注释,数据库字段也没有注释。公司新人要花费很大的精力去看源代码,很多时间都浪费了。如果有不明白的也不知道该去问谁,而且每来一个新人,老员工都会被同样的问题问一遍,对新人老人都是浪费时间,很没有效率,有时候写代码的人也不记得什么意思。比如有一个属性名叫hasJoinedAlliance,按照他们推崇的程序“自解释”理念,我把这个理解为“已经加入了联盟”,然后就掉坑里了。这个属性真实的意思是“以前加入过联盟,但现在可能不在联盟里”。 再比如,线上游戏每个一两周会有地图错误,就是玩家的城堡在地图上消失了。他们一直查不出来原因,在业务逻辑上看不出任何问题,有可能和服务端底层框架有关。但那个框架是几年前写的,即使那个框架的作者也要费尽去看那些没有注释的代码,害人害己啊。最后我写了个数据修改的脚本,每次出了问题就运行一下。类似的问题还有好多。他们的服务器架构是面向过程的,经常是一个函数几百行,里面各种if和switch。我当时开发的锦标赛和七日目标,要到处插代码。比如训练士兵的函数里,有经验的代码,有战斗力的代码,当然还有有锦标赛和七日目标的,等等。他们说不要为了使用对象而使用对象。好吧,我无语了,这是程序设计的方式,而不是用不用对象的问题。go语言的强大的接口实现分离的理念,他们还应该好好理解一下。

现在我在另一家游戏公司,兼做unity和java服务端开发。这家公司比上一家还不重视注释,程序里一个注释也没有。我习惯边写代码边加注释,写的注释也比较详细。然而公司要求不能用中文注释,我只好全删掉了。理由是可能会有乱码。程序里一行注释也没有可能就是因为要用英语,所以大家干脆都不写了。我很纳闷啊!unicode自上世界90年代初就有了,哪个IDE不支持utf8?还有就是公司的软件架构,我也不太喜欢。虽然用的是java和c#,服务器架构和unity架构充斥了很多面向过程的东西,代码里大量使用单例和C#委托,有种写c代码的感觉,定义struct加函数指针。每开发一个功能,就要建一个单例,然后所有逻辑都写进去。对于简单的小游戏这个方式效率很高,但是稍微功能多点的游戏,代码就会显得乱。

最后,我认为程序的注释是必须有的。如果你的英语很牛,可以写出来像unity官方文档那样简单明了又言辞精确的英文,那就用英文,否则还是乖乖的用中文吧,没什么丢人的。即使很牛的程序员也不一定会写文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值