杂谈:良好的编程思想。
- 提倡良好的代码风格
1、整洁
2、统一
3、流行
4、便捷
现在的项目中源代码主键增多,完全依靠人工来做代码走查很难查出问题,我们可以使用工具来统计代码,这里推荐使用Checkstyle,他可以自定义代码模板,然后根据模板检查代码是否遵循规范,从而减少枯燥的代码走查。
- 不要完全依靠单元测试来发现问题
不能保证代码中的所有错误都能被单元测试挖掘出来,原因有以下四点。
1、单元测试不可能测试所有的场景(路径)
2、代码整合错误是不可避免的
3、部分代码无法(或很难)测试
4、单元测试验证的是编码人员的假设
- 让注释正确、清晰、简洁
不好的注释习惯:
1、废话式注释
2、故事式注释
3、不必要注释
4、过时的注释
5、大块注释代码
6、流水账式注释
7、专为JavaDoc编写的注释
好的注释习惯:
1、法律版权信息
2、解释意图的注释
3、警示性注释
4、TODO注释
- 让接口的职责保持单一
单一职责有以下三个优点:
1、类的复杂度降低
2、可读性和可维护性提高
3、降低变更风险
如何实施单一职责原则:
1、分析职责
2、设计接口
3、合并实现
注意:接口职责一定要单一,实现类职责尽量单一。
- 增强类的可替换性
设计类的考虑以下三点:
1、子类型必须完全实现父类型的方法
2、前置条件可以被放大
3、后置条件可以被缩小
- 依赖抽象而不是实现
遵循以下几个规则:
1、尽量抽象
2、表面类型必须是抽象的
3、任何类都不应该从具体类派生
4、尽量不要覆写基类的方法
5、抽象不关注细节
- 抛弃7条不良的编码习惯
1、自由格式的代码
2、不使用抽象的代码
3、彰显个性的代码
4、死代码
5、冗余代码
6、拒绝变化的代码
7、自以为是的代码
- 以技术员自律而不是工人
1、熟悉工具
2、使用IDE
3、坚持编码
4、编码前思考
5、坚持重构
6、多写文档
7、保持程序版本的简单性
8、做好备份
9、做单元测试
10、不要重复发明轮子
11、不要拷贝
12、让代码充满灵性
13、测试自动化
14、做压力测试
15、“剽窃”不可耻
16、坚持向敏捷学习
17、重里更重面
18、分享
19、刨根问底
20、横向扩展
杂谈:良好的编程思想。相关推荐
- 类的包访问权限:《Java编程思想》中一段话的困惑
类的包访问权限:<Java编程思想>中一段话的困惑 在<java编程思想第三版>(陈昊鹏 饶若楠等译)的第五章隐藏具体实现中,5.4节的最后一段话是: "正如前面所提 ...
- 译者招募 | 《Java编程思想》作者Bruce Eckel新作On Java 8
硅谷创业之父Paul Graham曾在<黑客与画家>中写道,"判断一种语言是否流行的条件是,一种免费的实现,一本相关书籍,以及语言所依附的计算机系统." 当然,Java ...
- 《Java编程思想》学习笔记(三)——初始化与清理
一.初始化 初始化其实就是为变量分配内存空间,并确定其初始值的过程.想了解Java中初始化的各种情况,首先要了解Java中变量的类型.根据自己的理解,将Java中的变量类型分成以下几种,虽然可能不太准 ...
- 《Java编程思想》第四版读书笔记 第十四章 类型信息
2019独角兽企业重金招聘Python工程师标准>>> 14.2 RTTI运行时类型识别. Class对象包含了与类有关的信息,Java使用Class对象来执行其RTTI.每个类都有 ...
- 几种常用编程语言的编程思想和方法 转
搞软件的人,编程语言的掌握是基本功,如果单单是学习语法,最慢的一周之内也应该可以搞定(个人认为 语法层面c++是最复杂的).不幸的是,软件的本质是逻辑,解决方案的设计是要借助某种解决问题或编程的思想的 ...
- 1.1.3 以类为单位的编程思想
我的克隆过程,是通过这个语句完成的SqlConnection conn = new SqlConnection(); ,你不会有意见吧? 二.执行查询命令并显示查询结果 打开数据库,总要做点事,我们来 ...
- java编程思想 入门_java编程思想学习(基础)
第一章 java介绍 1.编程的本质: 机器空间:解空间 问题空间:实际需要解决的业务问题,将该问题抽象化,在解空间中对问题建模. 编程就是建立问题空间和机器空间中的关联 面向对象编程思想: 1.万物 ...
- Java中的泛型 --- Java 编程思想
前言 我一直都认为泛型是程序语言设计中一个非常基础,重要的概念,Java 中的泛型到底是怎么样的,为什么会有泛型,泛型怎么发展出来的.通透理解泛型是学好基础里面中非常重要的.于是,我对<Ja ...
- 《Java编程思想》读书笔记 第十三章 字符串
<Java编程思想>读书笔记 第十三章 字符串 不可变String String对象是不可变的,每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象,以及包含修 ...
- JAVA编程思想学习笔记——第一章 对象导论
搞了一年多java,野路子出身,发现java基础这块还是相当的薄弱!故决定学习<Java编程思想>这本书.在此把学习的知识点记录下! 面向对象的五大特性 1.万物皆为对象 2.程序是对象的 ...
最新文章
- 阿里6年32岁程序员:辞职在中小厂干了快两年,我怎么没有职场危机(年龄)?
- 使用委派调用对象的方法
- 如何解决IIS7上传文件大小限制【转】
- 25道Spring框架面试题
- 设置linux服务,Linux服务的seLinux设置
- SAP Spartacus里使用injection token提供默认配置的一个例子
- python程序代码解析_Python源码分析3 – 词法分析器PyTokenizer
- Java ClassLoader setPackageAssertionStatus()方法与示例
- 有关家居产品设计的外国专著_为啥外国的二手家具被称为vintage,中国就叫破烂?差在哪儿了?...
- 以下关于组装微型计算机的叙述 不正确的是,昆明理工大学 计算机系统练习题...
- (七)图像处理中常用算子Laplacian\Sobel\Roberts\Prewitt\Kirsch
- 【RS3精简版】月伴流星LiteWin10_Pro_(RS3_16299.19)精简专业版x86/x64合集2017.11
- Himall商城枚举帮助类EnumHelper(2)
- win下hadoop配置环境后cmd中报错
- 基于SSM二手房租赁系统
- 拜师——python基础入门—第3大节课—列表,排序,revered逆序,max,min,sum——day15
- dex2oat过程对系统性能的影响
- 简体字与繁体字互相转换
- js实现动态星空背景
- 计算机硬件功能作用,cpu的作用和主要功能是什么
热门文章
- 《kafka 核心技术与实战》课程学习笔记(五)
- Python: 学习系列之七:模块、PIPY及Anaconda
- 自由口协议转标准modbus通讯协议 非标协议转标准协议
- 学计算机如果进场,CPA考试计算器有讲究,这些计算器禁止携带入场!
- MAC Numbers 插入股票信息,函数 stock 无效的解决办法
- Java基础之JavaMail
- XFTP/Xshell能ping通但连不上
- mac Apple M1 在根目录无法创建文件和文件夹 mkdir: /data : Read-only file system
- winform 判断鼠标在一段时间内是否移动
- python安装kivy_无法安装kivy