SlideShare a Scribd company logo
1 of 22
Best Practice for Coding


                冯斌
     kid.stargazer@gmail.com
           珠海 正点科技
       2011-08 @ZhuHai , CN
       Power by
本文档将告诉你:
● 业界普遍认可的编码习惯

● 优秀程序员的一些想法

● 我的编程体会
本文档不会试图告诉你:
● 唯一标准

● 不变的规范

● 某种语言的编程细节
编程建议
命名
变量名

● 达意    "ct"?  "bt"?  "l"?

● 简洁     "friendsFromServer"?

● magic number    "3600000"?
命名
方法签名 - 对外接口

● 不要说废话 "getItemById(int id)"?

● 不要说太多 "getItemFromSQLite"?

● 无二义
命名
类签名

● 模块化命名

● 抽象与实现
统一风格
多种风格

避免在同一工程中出现

不要经常改变编码风格, 除非真的
很Sucks
访问范围与生命周期
访问范围与命名紧密相关

● 访问范围越大, 命名应越细致

● for(int i; i<size; i++)

● 在不增加复杂度的情况下尽可能隔离
  变量
访问范围与生命周期
生命周期 - static, final, ...

● 谁是对象的管理者

● 对外暴露尽可能使用不可变的对象

● 生命周期越长, 访问范围控制越严格

● 保护性拷贝
Sucks 复制/粘贴 代码冗余
Why 每次复制/粘贴时都思考一下

● 重复逻辑不可忍受

● 修改不便

● 制造混乱, 降低代码的可阅读性
了解和使用类库
标准库

● 可靠, 经严格测试, 不同版本行为固定

● 主流, 易读, 易维护, 易重用

● 持续改进
妥善处理异常

● 关键逻辑的异常处理

● 忽略异常, 几乎都是不正确的
哲学 or 原则
分割问题
现实世界的复杂性

● MVC

● 模块, 分工, 协作

● 划分方法, 需要长时间的积累
K.I.S.S
Keep It Simple, Stupid

● 保持简洁的设计

● 更多的代码(逻辑), 引入更多的复杂
  度

● 弹性, 灵活
优化
优化三原则:
不要优化, 不要优化, 不要优化

● 确认你的代码真的需要优化

● 真正地找到瓶颈

● 优化使代码更复杂
重构
易变的需求

● 带病的代码, 日后的灾难

● 需要足够的测试

● 单元测试
注释
注释能提高代码的可读性

● 避免代码段落中插入过多的注释

● 使用变量名, 方法名来解释代码

● 对外接口, 都应该在完整的注释

● 方法注释, 做了什么而不是怎么做
语言特性
优秀的代码, 需要充分运用语言特
性

● 充分发挥语言自身的强大功能

● 体会编程语言在设计思想

● 不同的语言, 不同的设计思想
工具
Linux (*UNIX)

● 30年前的设计, 仍然让人爱不释手

● 编程哲学

● 非常强大的开发环境

● 入门阵痛期
书籍
了解优秀工程师的思维

● Effictive Java

● Clear Code

● UNIX编程艺术

More Related Content

Similar to Best practice for coding

成为一个合格的工程师
成为一个合格的工程师成为一个合格的工程师
成为一个合格的工程师
huang chengkai
 
Android最佳实践
Android最佳实践Android最佳实践
Android最佳实践
supernlee
 
Gentek应用介绍20111123
Gentek应用介绍20111123Gentek应用介绍20111123
Gentek应用介绍20111123
oemgame
 
Test driven-frontend-develop
Test driven-frontend-developTest driven-frontend-develop
Test driven-frontend-develop
fangdeng
 
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
Will Huang
 
影视CG制作行业中的Python
影视CG制作行业中的Python影视CG制作行业中的Python
影视CG制作行业中的Python
Will Zhou
 
实习生答辩Finally
实习生答辩Finally实习生答辩Finally
实习生答辩Finally
Mars007
 

Similar to Best practice for coding (20)

成为一个合格的工程师
成为一个合格的工程师成为一个合格的工程师
成为一个合格的工程师
 
Android最佳实践
Android最佳实践Android最佳实践
Android最佳实践
 
Gentek应用介绍20111123
Gentek应用介绍20111123Gentek应用介绍20111123
Gentek应用介绍20111123
 
就業經驗分享
就業經驗分享就業經驗分享
就業經驗分享
 
COSCUP2016 - LLVM框架、由淺入淺
COSCUP2016 - LLVM框架、由淺入淺COSCUP2016 - LLVM框架、由淺入淺
COSCUP2016 - LLVM框架、由淺入淺
 
COSCUP 2016 - LLVM 由淺入淺
COSCUP 2016 - LLVM 由淺入淺COSCUP 2016 - LLVM 由淺入淺
COSCUP 2016 - LLVM 由淺入淺
 
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
 
Python 2 - 快速簡介
Python 2 - 快速簡介Python 2 - 快速簡介
Python 2 - 快速簡介
 
Using vim
Using vimUsing vim
Using vim
 
認試軟體測試的世界 & TDD/BDD 入門
認試軟體測試的世界 & TDD/BDD 入門認試軟體測試的世界 & TDD/BDD 入門
認試軟體測試的世界 & TDD/BDD 入門
 
OpenSCAD Workshop
OpenSCAD WorkshopOpenSCAD Workshop
OpenSCAD Workshop
 
测试驱动的前端开发初探
测试驱动的前端开发初探测试驱动的前端开发初探
测试驱动的前端开发初探
 
Test driven-frontend-develop
Test driven-frontend-developTest driven-frontend-develop
Test driven-frontend-develop
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Elixir 好用的編輯器
Elixir 好用的編輯器Elixir 好用的編輯器
Elixir 好用的編輯器
 
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
 
影视CG制作行业中的Python
影视CG制作行业中的Python影视CG制作行业中的Python
影视CG制作行业中的Python
 
在生命轉彎的地方 - 從軟體開發職涯,探索人生
在生命轉彎的地方 - 從軟體開發職涯,探索人生在生命轉彎的地方 - 從軟體開發職涯,探索人生
在生命轉彎的地方 - 從軟體開發職涯,探索人生
 
实习生答辩Finally
实习生答辩Finally实习生答辩Finally
实习生答辩Finally
 
程序员与技术
程序员与技术程序员与技术
程序员与技术
 

Best practice for coding