个人的一些编程经验

1.函数命名,最好能够见名知意,不需要看具体的实现就知道函数干嘛的。对于验证类函数,用肯定句式,isValid最佳,代码大全里有讲过。

2.变量命名,除了循环变量,i,j,k 这些,其他不要用简单字母,也不要用1,2 后缀。比如传入一个对象,然后重组输出一个新的对象,原对象可以以raw开头。区分开了,rawExchange,返回exchange。

3.对象内部的字段命名,要参照上下文,比如对象叫FEInfo,里面的ip字段就叫ip,不要再叫FeIp。同理可扩展至整个项目内部其他的模块命名。有时候因为历史遗留问题,和早起代码做适配,需要做一些妥协。

4.关于注释,理想的情况是,尽量少的注释,代码本身就是自解释的,针对一些很trick或者特殊要求的地方,需要额外注释,java标准库那么多注释是为了面向所有用户的,需要完善的文档。

5.代码风格,先入为主,继承原有的风格,虽然我看不惯8个空格,但特别强调这些没有意思,良好的代码,更侧重于优秀的架构,以及模块设计和实现。

6.代码字段,遵循业内惯例,比如一个rpc调用的返回描述,业内默认有ErrorCode和ErrorMsg字段的,ErrorCOde = 0 表示成功,linux和windows的系统调用也是如此。参照http状态码

7.函数尽可能的只做一件事,不要觉得另个操作很简单,就顺便做了,有歧义。

8.任何时候不要硬编码,硬编码的问题在于,要修改同一值,可能需要修改多处,容易造成bug。

9.同样的代码不要写两遍,面向对象的特点在于抽象和封装,针对相同的同样的操作,最好封装成util或者Helper工具类。

10.不要炫技,能够简单实现最好,注重别人接手的难易程度。

11.针对if语句,根据最终要处理的逻辑,适当优化,不要写成火箭型代码,逻辑的确特别复杂的,优化方法参照数字逻辑里的卡诺图

12.if条件简单但判断过多的,建议使用switch语句,这样可以直观的看到所有状态,逻辑清晰。

13.大部分优秀的架构设计都是简单好理解的,如果一个架构设计的太复杂,而且难以理解,实现将会更加困难。

14.大部分代码实现,思维都是一个线性的,不会太绕的,如果一个实现,你的实现逻辑比较绕,这个实现是有问题的。

15.正确的异常处理,如果这个异常时资源类异常会导致程序无法正常运行,处理时直接退出,这已经是阻塞性异常了。

16.增加必要的防御性,比如字符串分割,针对分割后的数组大小做一下验证,不符合的输出日志,并终止当前处理,函数返回。

17.针对有nullPoint返回的方法,做明确说明,针对返回数据列表的情况,建议返回空的列表。

18.代码遇到问题,不要去猜,要去想,更不要去怀疑编译器啥的了。根据单一变量对照原则,比如这次有问题,上次提交没问题,为什么,对照改动。为啥我本地好的,线上就不行等。

19.越是不合理的bug,最终的原因都来源自己的翻了一个很傻逼的错误,例如没有Start,没有初始化等。

20.先想是不是,在想为什么。不要一开始就否定了可能正确的原因,这样只会走进死胡同。

21.遇到问题,先问Google,不是百度,大部分人做的都只是搬砖,你遇到的别人都遇到过。

22.不要过度抽象,实际业务中不会有需要继承好多层的代码,抽象只会让代码越来越复杂。

23.代码实现时,考虑异常场景,理论上可能发生的场景,最终线上都会遇到,尤其网络消息到达问题,本来有顺序的消息,最终在终端上并不是按发送顺序到的。因为网络问题,很多业务逻辑都要做条件验证和超时逻辑。

24.多刷题,多思考,带来的是基础思维能力质的提升。

25.大部分技术没有看上去那么那么遥不可及,他们也是慢慢的一步步做起来的,很多知识名字看着高大上而已,比如信令系统,音视频传输。代码逻辑无非就是数据输入,数据处理,数据输出。

26.什么动态追踪,火焰图,断点等这些高级debug技能,你是用不上的,日志大法可以解决大部分问题,debug的关键在于,一看,而分析。当然很多人其实还停留在,我知道这块代码没问题,但还是要加个日志验证下,的确走到了这里。

27.业务逻辑和具体的存储逻辑分离,针对DAO层,一般都会有具体的封装,不要在业务逻辑层看到具体的存储细节,业务上层,只需要调用对象存储接口就好了。

28.有空可以看看之前写的代码,你会发现写的真丑。

29.关于日志,针对一些异常,增加记录日志,日志格式要带上当前请求的一些唯一标示信息,比如uid,packetId等,便于后期的问题追踪。个人建议关键的字段用大写,比如SEND,RECV IMS。

31.做项目考虑一定的扩展性,比如设计字段的可有可无,配置是否需要频繁改动。

30.掘金,CSDN上大部分人都是水货,大部分博客内容都是抄的wiki或者官方文档。

31.大部分分享都是垃圾,很多架构设计对你来说,自己没有亲身和相关经验,听着就跟听故事一样,没什么卵用。

32.写代码的时候动动脑子,我见过移除数组中部分元素,采用逐个remove的,你四不四傻。

32.大厂里面的人没你想的那么牛逼,优秀的人在哪里都是少的,做个靠谱的程序员就很不错了。

33.多写一些偏基础和教程的博客,慢慢的你就会有越来越多的关注,成了网红程序员,然后就你就可以搞公众号发广告了。

注:我是也是个水货,我说的不一定对。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180618G00G5M00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券