当前位置:网站首页>程序员版本的八荣八耻~
程序员版本的八荣八耻~
2022-07-02 22:10:00 【程序员小灰】
前言
大家好,最近整理了一个关于程序员日常开发版本的八荣八耻,还挺有意思的。给大家分享一下,哈哈~
1. 以接口兼容为荣,以接口裸奔为耻
以接口兼容为荣,怎么理解呢?
很多bug都是因为修改了对外旧接口,但是却不做兼容导致的。关键这个问题多数是比较严重的,可能直接导致系统发版失败的。新手程序员很容易犯这个错误。所以我们修改老接口的时候,一般要做好兼容。

如果你的需求是在原来接口上修改,尤其这个接口是对外提供服务的话,一定要考虑接口兼容。举个例子吧,比如dubbo接口,原本是只接收A,B参数,现在你加了一个参数C,就可以考虑这样处理:
//老接口
void oldService(A,B){
//兼容新接口,传个null代替C
newService(A,B,null);
}
//新接口,暂时不能删掉老接口,需要做兼容。
void newService(A,B,C){
...
}我们还要以接口裸奔为耻。为了保证接口报文的安全性,拒绝接口报文裸奔。因此,我们可以使用https协议,还建议对接口加签验签处理,数据加密等。
接口签名很简单,就是把接口请求相关信息(请求报文,包括请求时间戳、版本号、appid等),客户端私钥加签,然后服务端用公钥验签,验证通过才认为是合法的、没有被中间人篡改过的请求。
有关于加签验签的,大家可以看下我这篇文章哈,程序员必备基础:加签验签
2. 以规范日志为荣,以乱打日志为耻
我们的业务逻辑代码需要日志保驾护航。比如:你实现转账业务,转个几百万,然后转失败了,接着客户投诉,然后你还没有打印到日志,想想那种水深火热的困境下,你却毫无办法。。。
因此大家要打好日志,比如日志级别使用恰当,日志格式,在哪些地方打日志,参数打印哪个等等。不能乱打日志,要以规范日志为荣,乱打日志为耻。

3. 以代码自测为荣,以过度自信为耻
修改完代码,要自测一下,这个是每个程序必备的素养,即使你只是修改了一个变量或者一个字段。
要杜绝过度自信,尤其不要抱有这种侥幸心理:我只是改了一个变量或者我只改了一行配置的代码,不用自测了,怎么可能有问题。

因此,我们要以代码自测为荣,以过度自信为耻。
4. 以参数校验为荣,以运行异常为耻
参数校验是每个程序员必备的基本素养。你的方法处理,必须先校验参数。比如入参是否允许为空,入参长度是否符合你的预期长度。因此,我们要以参数校验为荣。
比如你的数据库表字段设置为
varchar(16),对方传了一个32位的字符串过来,如果你不校验参数,插入数据库直接异常了。

我们要以运行时异常为耻。
比如你没有做好一些非空校验,数组边界校验等等,导致的空指针异常、数组边界异常,尤其这些运行时异常还发生在生产环境的话,在有经验的程序员看来,这些错误行为会显得特别低级。
所以,我们要以参数校验为荣,以运行异常为耻。
5. 以设计模式为荣,以代码重复为耻
日常工作中,我们要以设计模式为荣。
比如策略模式、工厂模式、模板方法模式、观察者模式、单例模式、责任链模式等等,都是很常用的。在恰当的业务场景,我们还是把设计模式用上吧。设计模式可以让我们的代码更优雅、更具有扩展性。但是不要过度设计哈,不要硬套设计模式。
我们还要以重复代码为耻。重复代码,我相信每个程序员都讨厌的,尤其有时候你的开发工具还会给你提示出来。我们可以抽取公共方法,抽取公用变量、扩展继承类等方式去消除重复代码。

6. 以优化代码为荣,以复制粘贴为耻
日常开发中,很多程序员在实现某个功能时,如果看到老代码有类似的功能,他们很喜欢复制粘贴过来。这样很容易产生重复代码,所以我们要以复制粘贴为耻。一般建议加自己的思考,怎么优化这部分代码,怎么抽取公用方法,用什么设计模式等等。

个人觉得,优化代码的过程,可以让自己取得更大的进步。因此我们要以优化代码为荣,以复制粘贴为耻。
7. 以定义常量为荣,以魔法数字为耻
大家平时工作中,是不是经常看到魔法数字。魔法数字(Magic Number)是指拥有特殊意义,却又不能明确表现出这种意义的数字。程序里面存在魔法数字,易读性很差,且非常难以维护。
如下:
if(type==1){
System.out.println("关注公众号:捡田螺的小男孩");
}else if(type==2){
System.out.println("关注公众号:程序员田螺");
}else{
System.out.println("关注其他公众号");
}代码中的1、2就表示魔法数字,我们可以用常量取代魔法数,或者定义枚举去代替魔法数字哈。
8. 以总结思考为荣,以混水摸鱼为耻。
我们要以总结思考为荣。
比如你看完田螺哥的文章,可以总结思考一下,或者做做笔记,或者放到收藏夹,茶余饭后再看看。再比如你日常工作中,看到一段不错的代码,也可以思考一下亮点在哪里,如果是你自己来写的话,怎么写出更好的代码。反正就是要多总结,多思考,多复习,温故而知新嘛。
我们要以混水摸鱼为耻。比如工作中,一些小伙伴喜欢混水摸鱼,当一天和尚敲一天钟,代码多是复制粘贴,做完需求就摸鱼。实际上这个不可取的。

我们要在工作中成长,通过认真工作,使自己会得更多,将来换工作也可以拿到更高的薪水,对吧,加油吧,小伙子,以总结思考为荣,以混水摸鱼为耻。
最后
如果这篇文章对您有所帮助,或者有所启发的话,求一键三连:点赞、转发、在看,您的支持是我坚持写作最大的动力。
边栏推荐
- `Usage of ${}`
- 20220524_数据库过程_语句留档
- World Environment Day | Chow Tai Fook serves wholeheartedly to promote carbon reduction and environmental protection
- 归并排序详解及应用
- The threshold value of fusing proportion cannot be changed with sentinel, and setting the slow call proportion has no effect
- QT qsplitter splitter
- Share 10 JS closure interview questions (diagrams), come in and see how many you can answer correctly
- Lambda表达式:一篇文章带你通透
- QT qpprogressbar details
- Data analysis learning records -- complete a simple one-way ANOVA with Excel
猜你喜欢
![[NPUCTF2020]ezlogin xPATH注入](/img/6e/dac4dfa0970829775084bada740542.png)
[NPUCTF2020]ezlogin xPATH注入

首批 | 腾讯云完成国内首个云原生安全成熟度评估

Go语言sqlx库操作SQLite3数据库增删改查
![[chestnut sugar GIS] ArcMap - how to batch modify the font, color, size, etc. of annotation elements](/img/b1/1fae909fb6a9231096a93d741d6426.png)
[chestnut sugar GIS] ArcMap - how to batch modify the font, color, size, etc. of annotation elements

odoo13搭建医院HRP环境(详细步骤)
![[chestnut sugar GIS] ArcMap - why should the tick of classic capture be removed when using custom capture?](/img/b5/e746dd115995e82c93f667c58a601c.png)
[chestnut sugar GIS] ArcMap - why should the tick of classic capture be removed when using custom capture?

Qt QScrollArea
![P7072 [CSP-J2020] 直播获奖](/img/bc/fcbc2b1b9595a3bd31d8577aba9b8b.png)
P7072 [CSP-J2020] 直播获奖

Jinglianwen technology's low price strategy helps AI enterprises reduce model training costs
![[Solved] Splunk: Cannot get username when all users are selected“](/img/13/1e824c8005701e21fc5b4e73308d53.png)
[Solved] Splunk: Cannot get username when all users are selected“
随机推荐
Jerry's fast touch does not respond [chapter]
Lc173. Binary search tree iterator
STM32之ADC
海思3559万能平台搭建:在截获的YUV图像上画框
easyclick,ec权朗网络验证源码
The first batch of Tencent cloud completed the first cloud native security maturity assessment in China
MySQL queries nearby data And sort by distance
20220527_数据库过程_语句留档
Freshman learning sharing
静态文件显示问题
P1007 single log bridge
Data analysis learning records -- complete a simple one-way ANOVA with Excel
Lambda expression: an article takes you through
地平线2022年4月最新方案介绍
20220524_数据库过程_语句留档
Niuke network: maximum submatrix
Learning records of data analysis (II) -- simple use of response surface method and design expert
Boot actuator - Prometheus use
Splunk audit setting
Go language sqlx library operation SQLite3 database addition, deletion, modification and query