/coding-reflection

1.反思代码2.收藏精妙代码

coding-reflection

1.反思代码2.收藏精妙代码3.debug反思

章淼讲座学习笔记

一个优秀的工程师应该具备的能力

  • 对业务的理解,产品的设计不只是产品经理的事情,你要从你的角度理解用户最想要什么,而不是产品需要什么你就做什么

  • 学会把握大势

  • 学会借力使力

  • 研究和创新,如何分析和解决新的问题,独立思考而非照本宣科

  • 九零后非常封建,见到经理就发抖,见到权威就胆怯

  • 项目的管理和设计能力

    项目的能力

    代码

    好代码的要求: 鲁邦,高效,简洁,简短,共享可重用,可测试,可移植,可监控,可运维,可扩展(性能和功能)

    先搜,能搜到就不自己写

    需求要先明确好,一旦错了调试测试上线的时间要再来一遍

    软件最应该避免的是耦合性

    命名规范

    常量要定义含义

    注释写好

    函数功能单一

    函数能提取的尽量提取,后面就可以拿来复用节省时间和测试难度

    函数是一屏到两屏内完成

    函数的返回值有三种类型:逻辑判断真假,操作成功失败,获取数据类型

    做到代码一看就明白

    读代码读注释就能懂

    危险的错误在于过于自信

    空行表示逻辑

    先写注释再写代码

    模块的设计

    思考的重点概念,模型,数据结构,模块划分,算法

    脱离代码细节函数和语言

    模块的设计能力

    代码能抽象出图像来

    接口决定了外部关系,内部可以变,外部很难改

    代码可读性差是写的有问题,不是智商有问题

反思

《重构:改善既有代码的设计》读书笔记(一)

有时间一定要读 <代码大全> 和 <重构 改善既有代码质量>

  • 代码要一步步写 一步步试,而不是写了一堆再去运行,不然出错了不好定位bug
  • 需求一定要定清楚了再写代码,尤其是尽量不要改动底层pojo,不然代码要翻新好多
  • list,map这种数据结构尽量不要超过两层,不然就会很难想;可以用新建一个类来代替多层的关系
  • if(a==1)与if(1==a)的区别是 为了防止写成a=1,而不报错;"abc".equals(str)与str.equals("abc")的区别是可以避免空指针异常
  • 可以用三元表达式来代替简单if else 语句
  • 可以用提前return来简化if else结构
  • stringbuilder在循环中的字符串拼接性能远高于 +号的字符串拼接,因为stringbuilder始终只创建了一个字符串,而+号是在不断地创建

收藏

try catch

代码块间隔规则

Long.parselong

LinkedHashMap 神器!

debug

  • 控制变量,当变量较多时,把变量改成常量来运行

  • 条件断点和异常断点的使用

  • 认真思考报错信息

  • 如果查找报错信息没有找到好的解决办法,可以通过查找正确的代码来"对比debug" 例如之前oracle双库的事务bug