代码的艺术
作者:互联网
代码的艺术
目的解读
- 了解公司与学校写代码的不同
- 消除对于程序员这个职业的误解
- 建立对软件编程的正确认识
- 明确作为软件工程师的修炼方向
代码艺术
- 多角度解读、研究与创作
- 在写代码的过程中,需要综合的全方位的能力,包括把握问题的能力、建立模型的能力、沟通协助的能力、编码执行的能力
- 在写好代码之前,首先需要建立品味,品味是指我们首先要知道什么是好的代码,什么是不好的代码,这样我们才能不断地去调整自己的行为,然后去学习,去提高我们的代码能力,写出具有艺术感的代码
软件工程师
- 技术能力:编码、数据结构、算法、系统结构、操作系统、计算机网络、分布式系统
- 产品:产品交互设计、数据统计、业务运营
- 其他:项目管理、协作、研究与创新
代码实践
- 好代码标准:代码的正确和性能、代码的可读性和可维护性、代码的可运维和可运营、代码的可共享和可重用;高效(Fast)、鲁棒(Solid and Robust)、简洁(Maintainable and Simple)、简短(Small)、可共享(Re-usable)、可测试(Testable)、可移植(Portable)、可监控(Monitorable)、可运维(Operational)、可扩展(Scalable & Extensible)
- 编码前的需求分析和系统设计
- 编码中的编写代码和单元测试
- 编码后的集中测试、上线、持续运营和迭代改进
需求分析
- 定义系统/软件的黑盒行为,external,what
- 简介描述系统功能:系统类型描述、系统规模描述、系统定位和系统差异描述、系统对外接口功能描述
- 精确的数据
系统设计
- 设计系统/软件的白盒机制,internal,how & why
- 系统架构:system architecture,系统功能、组成、功能在组成间如何划分
- 系统设计的约束:资源约束
- 需求是系统设计决策的来源
- 系统设计的风格与哲学:功能单一是复用和扩展的基础,全局变量增加耦合从而增加了复杂性
- 接口的重要性:模块对外的函数接口、平台对外的API(RPC或者Web API)、系统间的通信协议、系统间存在依赖的数据
如何写好代码
-
代码也是一种表达方式
-
代码书写过程中的细节问题:模块(数据类、过程类模块,明确的功能,紧内聚,松耦合);类和函数;面向对象(编程方法和范式,谨慎使用多态和继承);模块内部的组成;函数(单入口、单出口);代码注释(先写注释,再写代码);代码块(代码逻辑,分层);命名;系统的运营(代码的可检测性,状态记录,对外界接口)
-
学习-思考-实践
-
知识-方法-精神
-
基础知识是根本
Mini-spider框架
多线程编程
- 将耗费时间多的逻辑放入临界区内,会导致无法发挥多线程对硬件资源最大化利用的优势
- I/O操作的处理:异常捕捉
细节处理
- 种子信息的读取
- 程序优雅退出:task_done、join
主逻辑
代码检查规则
代码检查的意义
- 代码可读性
- 发现代码缺陷
- 提前发现问题
- 规范制定与准入检查
- 提升编码规范的可运营性
代码检查的场景及工具
- 代码检查场景:本地研发环境Local、代码准入环节iCode、持续集成环节Agile
- 代码检查工具与服务:客户端、SVM、CI
- 代码检查覆盖范围:编程规范、代码缺陷、开源框架引用安全检查、可维护性MI
- 代码检查速度
代码检查规则
- 代码检查规则分级:error、warning、advice
- 机检任务合一
- 评审页行间提示
- 针对豁免、误报、咨询的说明
Python代码检查规则
代码风格规范
- 程序规模规范
- 语句规范
- 括号使用规范
- 缩进规范
- 空行规范
- 空格规范
- 注释规范
引用规范
- 标准库、第三方库、应用程序自有库
定义规范
- 变量定义:变量全小写、常量全大写
- 函数定义
- 类定义:首字母大写的驼峰式,没有基类时,应继承自object类
异常处理规范
- 禁止使用双参数形式或字符串形式的语法抛出异常
- 如需自定义异常,应在模块类定义Error的异常基类,且该基类必须继承自Exception
- 除非重新抛出异常,禁止使用except:语句捕获所有异常,应该使用except…:语句捕获具体的异常
- 捕捉异常时,应当使用as语法,禁止使用逗号语法
Python代码惯例
- 让模块既可被导入又可执行:python属于脚本语言,无统一的程序入口
- in运算符的使用
- 不使用临时变量交换两个值
- 用序列构建字符串
标签:艺术,检查,代码,系统,规范,模块,异常 来源: https://blog.csdn.net/weixin_45807767/article/details/121517468