课堂讲义

  1. 代码质量五大原则
    1. 编码规范
      1. 命名规范。学会合理科学的命名类名、方法名、变量名。命名宗旨:简洁明了,见名只意;了解常用单词缩写
      2. 注释。是否写根据所处工作环境的需要而决定。将以源代码写成以“注释”的说明类文档为目标
      3. 缩进。团队应该统一缩进格式。注意Windows平台与Linux平台的编码差异,最好以空格来代替Tab
      4. 页宽。代码最好的呈现方式是以“块”状呈现。编码规范里往往会要求设置IDE页宽,一行内的代码量不要超过所设置的页宽,超出部分换行切向右对齐
      5. 不同修饰符,常、静态变量,普通变量的排序方式
    2. 代码重复
      1. 实际开发中应避免为了图方便,简单而对某些代码进行粗暴的CTRL C + CTRL V
      2. 当项目庞大时如何避免对重复代码遗漏,可借助IDE所提供的一些自动检查来规避
      3. 当出现重复代码时,多想想面向对象原则(抽象,封装,多态)的特性,通过 这些特性去修改重复代码
      4. 做好团队沟通,避免个团队成员重复的“造轮子”
    3. 测试代码覆盖率
      1. 测试代码覆盖率的作用往往是生成某种形式上的报告类文件提供给某种特定人员的产物
      2. 在项目进度紧张的情况下,快速有效的对有"隐患"代码进行检查,活用main方法做到增量开发
      3. 后期需对测试报告类进行补全验证
      4. 了解TDD测试驱动开发
    4. 依赖项分析
    5. 代码复杂度
      1. 不管多复杂的业务,多复杂的算法都应尽最大努力使他们简洁化
      2. 逻辑逆推,减少逻辑判断嵌套
      3. 复杂的逻辑条件主动抽象
      4. 掌握switch与if else的差异化
      5. 减少循环嵌套,主动将嵌套循环抽象
      6. 掌握各种循环while,while do , do while ,for , for each,stream等的差异化
      7. 避免出现大量无营养含量代码,如各种get/set,通过设计模式,反射等手段来解决此类问题
  2. 如何提高代码质量
    1. 结对编程
      1. 如何有效的结对编程
      2. 在项目组中尝试与另一团队成员开展结对编程的工作方式
    2. coding review
      1. 能够做到代码在“脱手(如提交至版本库)”之前进行自我的codeing review
      2. 如何有效的在团队中进行coding review
      3. 在项目组中尝试对每日的有效代码进行coding review
    3. 开源代码
      1. 代码质量最好的学习途径,如jdk,spring源代码
      2. 临摹,模拟源代码的编写方式
      3. 不断审视,解读这类源代码的编写思维
    4. 工具运用
      1. 了解代码检查工具类,如findbug,QAplug,PMD等
      2. 定期通过这类辅助工具对代码进行检查
      3. 最大程度的独立解决辅助工具标记出的问题源
    5. 责任
      1. 代码质量从侧面意义反应出该开发人员是否对公司,同事,自己称职、负责
      2. 以上均为方法论,而最根本的核心在于开发人员的工作态度,工作责任心
      3. 培养自己的工作责任心,势必会在代码质量这块进步

我的笔记:

代码质量影响因素

  1. 编码规范

命名、注释(代码就是最好的注释,注意命名和复杂度)、缩进(统一Tab或四个空格)、页宽(成块的整洁的代码)。

  1. 代码重复

  2. 测试

测试覆盖率、增量开发(在main方法中测试不确定的代码)、TDD(优:bug少,缺:时间消耗多)。

  1. 代码依赖项
  2. 代码复杂度

面向过程 -> 抽象重构、if/for不能嵌套超过两层、逻辑太多的地方抽象成方法、减少方法参数、逆推(比如先写false部分)、封装不变,抽象变量。

  1. 效率

先功能后重构、结合业务场景考虑效率。不要怕暴露问题(结对编程)、项目进度(十分钟以上求助他人)。

如何提高代码质量

  • 结对编程
  • 代码review
  • 开源代码(JDK、Spring)
  • 工具运用(findBug等)
  • 责任心(你写的代码是给别人看的)

课后作业

需求:某公司人力资源部需对已有薪资体系进行改造。现急需一份员工薪资计算程序导入“员工出勤报表”后生成“员工薪资报表”,具体已知项如下:

  1. 某公司工种分为干部员工,基层员工两种;
  2. 干部员工薪资基数为1.68 , 基层员工薪资基数为1.1;
  3. 薪资计算公式:基本工资/22 × 实际到岗工作日 × 薪资基数 - 社保金额;(忽略个人所得税)
  4. 社保金额计算公式 :基本工资 × 8%  + 基本工资×1% + 基本工资×2%
  5. 员工签约薪资表

工号

员工姓名

基本薪资

工种

马云

8888

干部

2

马化腾

8888

干部

3

任正非

8600

干部

4

刘亦菲

3500

基层

5

沈腾

5800

基层

6

刘谋

6000

基层

7

陈意涵

4000

基层

8

林志玲

7000

干部

9

孙红雷

7500

基层

  1. 员工1月出勤报表

工号

出勤天数

10.5

2

12

3

20

4

22

5

21

6

18

7

22

8

20

9

21.5

  1. 员工薪资报表格式

工号

姓名

实际出勤天数

当月薪资

社保扣款

其他扣款

实际薪资

附上作业代码,欢迎指正:

github链接

公司培训lesson 1-代码质量的更多相关文章

  1. (转)提高代码质量---one

    1. 摘要 这是烂代码系列的第二篇,在文章中我会跟大家讨论一下如何尽可能高效和客观的评价代码的优劣. 在发布了关于烂代码的那些事(上)之后,发现这篇文章竟然意外的很受欢迎,很多人也描(tu)述(cao ...

  2. CODING DevOps 线下沙龙回顾一:DevOps 代码质量实战

    11 月 22 日,由 CODING 主办的 DevOps 技术沙龙系列「质量」专场在上海圆满结束.在活动现场,四位来自腾讯等知名企业的技术大咖们分享了研发质量与效能的实战经验,与观众们共同探讨如何采 ...

  3. ESLint 检查代码质量

    利用 ESLint 检查代码质量 其实很早的时候就想尝试 ESLint 了,但是很多次都是玩了一下就觉得这东西巨复杂,一执行检查就是满屏的error,简直是不堪入目,遂放弃.直到某天终于下定决心深入看 ...

  4. 提高Java代码质量的Eclipse插件之Checkstyle的使用详解

    提高Java代码质量的Eclipse插件之Checkstyle的使用详解 CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具.它能够自动化代 ...

  5. 提高Java代码质量的Eclipse插件之Checkstyle的使用具体解释

    CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发者遵守某些编码规范的工具.它可以自己主动化代码规范检查过程.从而使得开发者从这项重要可是枯燥的任务中解脱出来. Ch ...

  6. 如何保障Go语言基础代码质量?

    为什么要谈这个topic? 实践中,质量保障体系的建设,主要针对两个目标: 一是不断提高目标业务测试覆盖率,保障面向客户的产品质量:二就是尽可能的提高人效,增强迭代效率.而构建全链路质量卡点就是整个体 ...

  7. 为公司架构一套高质量的 Vue UI 组件库

    有没有曾遇过,产品要我们实现一个功能,但是 iview 或者 elementui 不支持,我们然后义正言辞的说,不好意思,组件库不支持,没法做到. 有没有曾和设计师争论得面红耳赤,其实也是因为组件库暂 ...

  8. 还不会用FindBugs?你的代码质量很可能令人堪忧

    前言 项目中代码质量,往往需要比较有经验的程序员的审查来保证.但是随着项目越来越大,代码审查会变得越来越复杂,需要耗费越来越多的人力.而且程序员的经验和精力都是有限的,能审查出问题必定有限.而在对代码 ...

  9. [代码质量] 代码质量管控 -- 复杂度检测 (JavaScript)

    转载自: https://juejin.im/post/59bb8b546fb9a00a4247532e 背景 代码的复杂度是评估一个项目的重要标准之一.较低的复杂度既能减少项目的维护成本,又能避免一 ...

随机推荐

  1. zookeeper和Eureka对CAP理论的支持

    著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性).A(可用性)和P(分区容错性).由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡.在此Zookeeper保证 ...

  2. Flex 布局的各属性取值解释

    Flex布局是一种弹性布局.布局样式比较灵活,大多数情况下可以替代float,而且不会脱离文档里流. Flex中定义了两个轴线,一个主轴一个副轴,这个概念你可以想想屏幕坐标系(X轴向右,Y轴向下),F ...

  3. js做小数运算精度问题

    当js做小数运算时存在bug,大概是因为二进制和十进制转换之间的关系. bug如图 解决方案 1.运算结果后,乘以100再除以100.网上推荐这种方法但是乘以1000再除以1000依然存在精度问题 2 ...

  4. Spring学习笔记1——基础知识

    1.在java开发领域,Spring相对于EJB来说是一种轻量级的,非侵入性的Java开发框架,曾经有两本很畅销的书<Expert one-on-one J2EE Design and Deve ...

  5. UVA-1613 K-Graph Oddity (着色问题)

    题目大意:一张n个顶点.m条边的无向连通图,用k种颜色着色(相邻顶点颜色不能相同),其中k为不小于点的最大度数的最小奇数. 题目分析:水题一道.建张图深搜一下就行了. # include<ios ...

  6. C primer plus 5 读书笔记3

    1.ASCII 码前31位控制字符(非打印字符)的表示方法:(1)使用ASCII码表示比如蜂鸣字符用7(十进制)表示:(2),使用特殊的符号序列,即转义序列.如 ‘\a’表示蜂鸣字符.(3),使用十六 ...

  7. JAVA实现Excel导入/导出【转】

    JAVA实现Excel导入/导出[转] POI的下载与安装 请到网站http://www.apache.org/dyn/closer.cgi/poi/右击超链接2.5.1.zip下载压缩包poi-bi ...

  8. 判断是否是iPhone5

    #define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ...

  9. 如何从MTK机器的NVRAM中获取WIFI mac地址

    在MTK的机器中,如果不用特定的工具烧写MAC地址,在开机后打开WIFI后会显示: "NVRAM WARNING: Err=0x10" 这就是没有烧写mac地址的原因,所以每次打开 ...

  10. azure 最佳实践 -- 保持冗余

    保持冗余确保你的应用的部署体系是有冗余的,以避免单一节点失败的情况.一个弹性良好的系统可以灵活的绕过系统故障.找出应用中(请求执行)的关键路径.路径中的每个节点是否都有冗余?子系统失败时,系统能否有效 ...