技术的八荣八耻

1. 以接口兼容为荣,以接口裸奔为耻

接口兼容为荣,怎么理解呢?

很多bug都是因为修改了对外旧接口,但是却不做兼容导致的。关键这个问题多数是比较严重的,可能直接导致系统发版失败的。新手程序员很容易犯这个错误。所以我们修改老接口的时候,一般要做好兼容

如果你的需求是在原来接口上修改,尤其这个接口是对外提供服务的话,一定要考虑接口兼容。

 

我们还要以接口裸奔为耻。为了保证接口报文的安全性,拒绝接口报文裸奔。因此,我们可以使用https协议,还建议对接口加签验签处理,数据加密等。

接口签名很简单,就是把接口请求相关信息(请求报文,包括请求时间戳、版本号、appid等),客户端私钥加签,然后服务端用公钥验签,验证通过才认为是合法的、没有被中间人篡改过的请求。

有关于加签验签的,大家可以看下我这篇文章哈,程序员必备基础:加签验签

2. 以规范日志为荣,以乱打日志为耻

我们的业务逻辑代码需要日志保驾护航。比如:你实现转账业务,转个几百万,然后转失败了,接着客户投诉,然后你还没有打印到日志,想想那种水深火热的困境下,你却毫无办法。。。

因此大家要打好日志,比如日志级别使用恰当,日志格式,在哪些地方打日志,参数打印哪个等等。不能乱打日志,要以规范日志为荣,乱打日志为耻。

我之前整理了15个打印好日志的建议,大家可以看看哈,工作总结!日志打印的15个建议

3. 以代码自测为荣,以过度自信为耻

修改完代码,要自测一下,这个是每个程序必备的素养,即使你只是修改了一个变量或者一个字段。

要杜绝过度自信,尤其不要抱有这种侥幸心理:我只是改了一个变量或者我只改了一行配置的代码,不用自测了,怎么可能有问题

因此,我们要以代码自测为荣,以过度自信为耻

4. 以参数校验为荣,以运行异常为耻

参数校验是每个程序员必备的基本素养。你的方法处理,必须先校验参数。比如入参是否允许为空,入参长度是否符合你的预期长度。因此,我们要以参数校验为荣

比如你的数据库表字段设置为varchar(16),对方传了一个32位的字符串过来,如果你不校验参数,插入数据库直接异常了。

我们要以运行时异常为耻

比如你没有做好一些非空校验,数组边界校验等等,导致的空指针异常、数组边界异常,尤其这些运行时异常还发生在生产环境的话,在有经验的程序员看来,这些错误行为会显得特别低级。

所以,我们要以参数校验为荣,以运行异常为耻

5. 以设计模式为荣,以代码重复为耻

日常工作中,我们要以设计模式为荣。

比如策略模式、工厂模式、模板方法模式、观察者模式、单例模式、责任链模式等等,都是很常用的。在恰当的业务场景,我们还是把设计模式用上吧。设计模式可以让我们的代码更优雅、更具有扩展性。

但是不要过度设计哈,不要硬套设计模式。

我们还要以重复代码为耻。重复代码,我相信每个程序员都讨厌的,尤其有时候你的开发工具还会给你提示出来。我们可以抽取公共方法,抽取公用变量、扩展继承类等方式去消除重复代码。

大家如果对设计模式还不是很熟悉的话,可以多看几遍我的这篇文章哈:实战!工作中常用到哪些设计模式

6. 以优化代码为荣,以复制粘贴为耻

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

个人觉得,优化代码的过程,可以让自己取得更大的进步。因此我们要以优化代码为荣,以复制粘贴为耻。

7. 以定义常量为荣,以魔法数字为耻

大家平时工作中,是不是经常看到魔法数字。魔法数字(Magic Number)是指拥有特殊意义,却又不能明确表现出这种意义的数字。程序里面存在魔法数字,易读性很差,且非常难以维护。

如下:

if(type==1){print("GreenforestQuan-帅");
}else if(type==2){print("GreenforestQuan-棒");
}else{print("GreenforestQuan-异常");
}

代码中的1、2就表示魔法数字,我们可以用常量取代魔法数,或者定义枚举去代替魔法数字哈。

8. 以总结思考为荣,以混水摸鱼为耻。

我们要以总结思考为荣。

可以总结思考一下,或者做做笔记,或者放到收藏夹,茶余饭后再看看。再比如你日常工作中,看到一段不错的代码,也可以思考一下亮点在哪里,如果是你自己来写的话,怎么写出更好的代码。反正就是要多总结,多思考,多复习,温故而知新嘛。

我们要以混水摸鱼为耻。比如工作中,一些小伙伴喜欢混水摸鱼,当一天和尚敲一天钟,代码多是复制粘贴,做完需求就摸鱼。实际上这个不可取的。

我们要在工作中成长,通过认真工作,使自己会得更多,将来换工作也可以拿到更高的薪水,对吧,加油吧,小伙子,以总结思考为荣,以混水摸鱼为耻

最后

如果这篇文章对您有所帮助,或者有所启发的话,求一键三连:点赞、转发、在看,您的支持是我坚持写作最大的动力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/778208.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决windows报错:该文件没有与之关联的应用来执行该操作

报错截图:解决方案 1、新建txt文件2、复制内容到txt文件 taskkill /f /im explorer.exe reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons" /v 29 /d "C:\Windows\system32\imageres.dll,154" /t reg_sz /f …

tomcat10 springboot项目部署成功但springboot没有启动日志问题

问题描述项目在tomcat8可以启动成功,请求也可以正常处理,在tomcat10上只有部署成功信息比如: deployWAR Deployment of web application archive [/data1/WWW/webapps/XXX.war] has finished in [127] ms, 但是没有springboot启动的信息。 该问题 不属于springboot打包为war包…

Centos7 安装 Imc

centos 7 安装 imc 注意:安装的时候必须选择图形化安装。即安装系统的时候,“软件选择”那块选择“带 GUI 的服务器”。关闭 selinux 和 防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g&q…

USB协议基础篇

初次接触USB的同学,可能会被里面各种名词给搞晕,下面就来梳理一下这些知识,希望能帮助大家理解USB。一,从最常见的名词说起 1.1 什么是USB 这个我就不多解释了,直译就是通用串行总线。再不明白的就百度。 1.2 USB协议版本USB 1.0/1.1(low/full speed),传输速率最大为12Mb…

【YashanDB数据库】statement级别的触发器在jdbc接口调用executeBatch时被多次触发

问题现象 某客户使用jdbc接口向yashandb的表A插入数据。 表A上有一个语句级触发器,其内容为在触发时执行alter sequence操作;另外还有一个insert时的行级触发器,其内容为将每行的部分列赋给新值,这些新值要么来自sequence.nextval,要么来自于current_timestamp。 客户向表…

Redis分布式锁防止缓存击穿

一、Nuget引入 StackExchange.Redis、DistributedLock.Redis依赖 二、使用 StackExchange.Redis 对redis操作做简单封装public class RedisHelper { private static ConnectionMultiplexer _redis; private static string _connectionString;// 静态构造函数,确保在程序启动时…

新西兰 WHV 打工度假签证 All In One

新西兰 WHV 打工度假签证 All In One New Zealand WHV (Working Holiday Visas)新西兰 WHV 打工度假签证 All In OneNew Zealand WHV (Working Holiday Visas)打工度假常见问题答疑我们为你整理一些关于新西兰打工度假签证的常见问题及解答,希望能够帮助准备中的你。我该如何申…

词云图大师(WordCloudMaster)上线Web端!

我们非常激动地宣布,词云图大师(WordCloudMaster)现已正式上线Web端!这一全新版本为用户带来了更多的便捷和功能,让创建和分享词云变得更加轻松。无论是企业、教育机构还是个人用户,都可以通过Web端实现快速生成和定制属于自己的词云图。 https://studio.wordcloudmaster…

图表全能王(ChartStudio) 上架VisionPro!

图表全能王(ChartStudio) - 终极图表制作工具!支持条形图、折线图、面积图、柱形图、条形图、饼图、玫瑰图、雷达图、牛肉图、风琴图、旭日图、桑基图等图表。 https://apps.apple.com/app/chartstudio-data-analysis/id6474099675 https://apps.apple.com/cn/app/%E5%9B%BE%E…

H5页面能否获取手机的ip

在HTML5中,出于安全和隐私的考虑,浏览器不允许网页直接访问设备的本地IP地址。不过,可以通过一些方法间接获取到用户的公网IP地址,但这些方法通常依赖于服务器端的配合。 以下是几种获取用户公网IP地址的方法: 1. 使用WebRTC WebRTC(Web Real-Time Communications)提供了…

异常类型结构图

异常类型结构图 目录异常类型结构图异常类型结构图Error和Exception的区别Error和Exception的联系Error和Exception的区别 异常类型结构图Error和Exception的区别 Error和Exception的联系继承结构:Error和Exception都是继承于Throwable,RuntimeException继承自Exception。 Er…

Typecho在Ubuntu 22.04上的安装部署

本文介绍了Typecho在Ubuntu 22.04上的安装和配置安装Nginx并配置访问 安装PHP并输出脚本结果 配置typechoNginx安装并验证 apt install nginx systemctl start nginx正常情况应该可以看到Nginx的欢迎页面了,如果看不到就是防火墙的问题,设置下防火墙放通即可。 安装PHP并使用…