关于写代码的几个看法
最近在新公司负责bug的修复,发现很多的代码逻辑理解起来有些困难。现在将其中观察到的现象列出来,谈谈自己的看法。
1.类过大
对于代码来说,我们在编写的时候最好做到SRP(Single Responsibility Principle)。但是实际的项目由于经过了不同的开发人员,以及工期比较紧张的原因,所以这一原则被遵守的不是很好。经常看到一个函数100多行,可能我遇到的还算好的了,这个问题不是最大的。
修改建议:一个函数最好控制在30--50行左右
2.同样的一种情况,用多个变量表示
比如说对于视频格式,HLS(m3u8)有时候叫hls,有时候叫m3u8,这个问题还好,然后一个bool的变量代表hls(hlsType_),一个代表m3u8(m3u8Type_).判断的时候有时候用hlsType_,有时候用m3u8Type_,导致判断变量不明确。一个地方忘记修改,就非常容易出现bug。
修改建议:对于一个类型,只用一种标志,判断方式最好由函数导出而不是直接判断变量类型。
3.在函数的参数中,引入bool类型的控制变量
在函数中引入bool变量被成为逻辑耦合,这对于代码的理解是非常不好的。
具体的分析 https://coolshell.cn/articles/5444.html 。记得代码中有个函数是这样的
void Func(Client& client,bool dns,bool complete).
表示智商不好的我,问了好多次领导终弄明白了,就赶快加上了注释。
能猜出来dns和complete的含义和关系的同学,我向你们表示敬意。
修改建议:不在函数中写入bool变量。
4.数据传输和业务逻辑未分离
对于网络编程来说,主要涉及到两个部分。1.socket IO和2.协议解析 其实这两个部分是正交的,举个例子说明一下。
比如 “乾隆” 让 “和大人” 到宫里商量事情,用的是两个人只懂的暗号,这就是协议。
这个消息怎么让“和大人”知道就是socket IO。
比如协议可以选择 1.满文 2.汉文 或者 3.诗词中的一些话。
传输方式可以选择 1.口谕 2.圣旨 3.信鸽 。
可以形成一个组合型的矩阵。
协议 | 满文 | 汉文 |
---|---|---|
口谕 | 满文口谕 | 汉文口谕 |
信鸽 | 信鸽带满文纸条 | 信鸽带汉文纸条 |
这样的设计在扩充协议或者传输方式的时候都非常的容易,而且每个部分各司其职,非常容易理解。
修改建议:将协议解析和数据传输分开,容易理解。
5.减少类的成员变量,相关变量合并和注释
在很多的代码规范中,会提到尽量少用或者不用全局变量,对于类来说,就是尽量减少类的成员变量,能用局部变量或者函数参数的方式表示的,尽量不要选择用成员变量来表示。在对于需要一些计算结果的情况下,要做到不要边接受数据,边计算中间结果。因为如果要对最后的结果进行修正的话,中间结果也需要修正,会增加程序的修改位置和难度。
修改建议:只保留数据的原始结果,在最后的步骤中计算最后的结果。
类的成员变量==类函数的全局变量
转载于:https://www.cnblogs.com/Dennis-mi/p/8410655.html
关于写代码的几个看法相关推荐
- 新华三发布H3C Workspace数字工作空间:只需一张屏,程序员也能随时随地在云上写代码
随着数字时代的不断发展,工作模式经历了面对面的"纸+笔"模式.办公室场景下的"PC+电脑"模式.以及远程办公场景下的"手机+协同软件"模式, ...
- 抢程序员饭碗?自动写代码的Deep TabNine真如此神奇?
作者 | James Vincent等 编译 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 导读:在过去的一年中,AI 生成书面文字的能力大大提高.通过扫描庞大的文本数据集,机器学 ...
- CTO集体怒吼:我到底要不要继续写代码(下篇)
http://www.devstore.cn/new/newInfo/4708.html 5.在人人创业的时代里,竞争压力非常大.有很多产品,甚至会有多个竞争对手,那么产品技术和布局会非常重要.CTO ...
- 35岁之后,你还会继续写代码吗?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 前段时间,阿里CEO张勇,发表了一个论调,引起多方关注, ...
- 架构师究竟要不要写代码?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! Talk is cheap, show me the c ...
- 程序员在网吧写代码被暴打一顿!
近期在网上看到一个新闻,程序员在网吧写代码被人暴打一顿! 事情是这样子的,那位程序员家里电脑坏了,又有一个很急的项目要赶,就在小区楼下的网吧去写代码!由于时间很急,项目有很大,程序员的思路必须非常清晰 ...
- java 8代码 改 java7_Java 8 到 Java 14,改变了哪些你写代码的方式?
前几天,JDK 14 正式发布了,这次发布的新版本一共包含了16个新的特性. 其实,从Java8 到 Java14 ,真正的改变了程序员写代码的方式的特性并不多,我们这篇文章就来看一下都有哪些. La ...
- Java 8 到 Java 14,改变了哪些你写代码的方式?
前几天,JDK 14 正式发布了,这次发布的新版本一共包含了16个新的特性. 其实,从Java8 到 Java14 ,真正的改变了程序员写代码的方式的特性并不多,我们这篇文章就来看一下都有哪些. La ...
- 写代码也有“套路”-谈谈设计模式
编程教室开了这么久,已经有很多人从完全零基础的小白成为了会写代码的菜鸟程序员,能够自己独立开发程序.不过到此阶段,常常会遇到瓶颈,感觉功能可以实现,但代码看起来有些别扭: 代码中有很多相似的重复代码 ...
最新文章
- ecilpse连接oracle ojdbc驱动
- 关于mysql中truncate
- leetcode -day19 Convert Sorted List to Binary Search Tree
- 深入Java集合学习系列:ArrayList的实现原理
- 笔记本电脑打开后不显示桌面_宝骏630打开空调开关后压缩机不工作 - 汽车空调...
- java多态的理解(运行时多态)_Java多态的理解
- 分针网——每日推荐:PHTML解析原理
- 【操作系统】—中断和异常
- 《从零开始学Swift》学习笔记(Day 39)——构造函数重载
- Ripple 20:严重漏洞影响全球数十亿IoT设备,复杂软件供应链使修复难上加难
- http协议详解(超经典)
- 计算机自动设置开机,怎么设置电脑自动开机
- CMT 注册——Google Scholar Id,Semantic Scholar Id,和 DBLP Id
- 2018年度获取工作日节假日API
- 如何将图片的背景色去掉?怎样快速去除背景色?
- 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(二) Logstash简介及常见配置语法
- epub格式电子书剖析之三:NC…
- java日期计算_java日期计算
- java.util.logging log4j,Java核心代碼(十)日志log4j,java.util.logging,commons-logging
- java GUL编程