SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
Objective-C开发规范
网易博客内部版本

基于Google、Apple公司的
相关规范




                    jenkinv 2012/05/29
目录
命名
格式
约定
工具
命名
camel-casing(驼式命名)
尽量不使用缩写
避免使用特殊字符,但实例变量允许使用_
命名

类名(Class Names)
  首字母大写
  只有框架或者组件代码才需要类前缀
  (如NS,UI,IB等)
命名

分类(Category Names)
  首字母大写
  文件名:NSString+SBJSON.h
  类别名:NSStringSBJSONAdditions
命名

方法名(Method Names)
  首字母小写
  getter不需要get-前缀,直接使用属性
  名称
命名
实例变量(Instance Variables)
  下划线开头
  使用@property和@synthesize
  直接使用@synthesize property=_property;
  ,无须在构造函数中声明实例变量。
命名

常量(Constants)
  k开头
格式
          使用4空格代替Tab
          方法参数过多时,使用多行,冒号对齐
UIBarButtonItem *leftButton = [MBarButtonItem barButtonItemWithTitle:@" 博客"
                                                         normalImage:leftButtonImage
                                                     highligtedImage:leftButtonImagePress
                                                              target:self
                                                              action:@selector(restoreNavBar:)];
格式
 方法前的+/-后面留⼀一空格,参数列表
 中只有参数之间留空格
 - (void)headerView:(HeaderView *)headerView selectedIndex:(NSInteger)index {
格式

协议尖括号与类名之间不留空格
@interface MessageListViewController : PageViewController<LDTaskObserver> {
约定

初始化时不需要设置变量为0或者nil
约定

私有方法可以在实现文件中通过类别来
实现,如
EGORefreshTableHeaderView.m中包
含:
@interface EGORefreshTableHeaderView (Private)
    - (void)setState:(EGOPullRefreshState)aState;
@end
约定

#import Objective-C/Objective-C++头文件
#include C/C++头文件
约定

避免在init和dealloc中使用accessors
  原因:子类可能会重写accessors并操
  作其它成员变量
约定

对NSString对象使用copy而不要使用
retain
@property (copy) NSString *name;
约定

不能直接把integer转型成BOOL,转型时
只使用了最后⼀一个字节,可以使用三目
运算达到同样的效果。
不要直接比较BOOL与YES/NO
约定

delegate对象不能被retain


@protocols来实现回调
约定

手动管理内存
 如果使用的第三方组件需要arc,可以
 给相应的源文件添加编译选项  -
 fobjc-arc
工具

 代码警告(Issue,cmd+4)
 代码静态分析(Analyze,shift+cmd+B)
 代码运行时分析(Profile, cmd+I)
参考

 Google Objective-C Style Guide
 Apple’s Cocoa Coding Guidelines

Contenu connexe

Tendances

0220 Windows server 2008 PowerShell
0220 Windows server 2008 PowerShell0220 Windows server 2008 PowerShell
0220 Windows server 2008 PowerShellTimothy Chen
 
Oracle公司内部数据库培训资料
Oracle公司内部数据库培训资料Oracle公司内部数据库培训资料
Oracle公司内部数据库培训资料yiditushe
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档yiditushe
 
5, initialization & cleanup
5, initialization & cleanup5, initialization & cleanup
5, initialization & cleanupted-xu
 
改善程序设计技术的50个有效做法
改善程序设计技术的50个有效做法改善程序设计技术的50个有效做法
改善程序设计技术的50个有效做法crasysatan
 
SQL Loader & Bulk Insert 大量資料匯入工具
SQL Loader & Bulk Insert 大量資料匯入工具SQL Loader & Bulk Insert 大量資料匯入工具
SQL Loader & Bulk Insert 大量資料匯入工具HO-HSUN LIN
 
Sql语句编写优化和基本原理总结
Sql语句编写优化和基本原理总结Sql语句编写优化和基本原理总结
Sql语句编写优化和基本原理总结wangchongan
 
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計Justin Lin
 
Js的国(转载)
Js的国(转载)Js的国(转载)
Js的国(转载)Leo Hui
 
Python xmlrpc-odoo
Python xmlrpc-odooPython xmlrpc-odoo
Python xmlrpc-odoorobin yang
 
SurveyiOSCodingStyleFromAppleDocument
SurveyiOSCodingStyleFromAppleDocumentSurveyiOSCodingStyleFromAppleDocument
SurveyiOSCodingStyleFromAppleDocumentFelix Chen
 
希望科技研发部变量命名及编码规范
希望科技研发部变量命名及编码规范希望科技研发部变量命名及编码规范
希望科技研发部变量命名及编码规范Hongjian Wang
 

Tendances (20)

0220 Windows server 2008 PowerShell
0220 Windows server 2008 PowerShell0220 Windows server 2008 PowerShell
0220 Windows server 2008 PowerShell
 
Jasmine2
Jasmine2Jasmine2
Jasmine2
 
函式 Functions
函式  Functions函式  Functions
函式 Functions
 
Oracle公司内部数据库培训资料
Oracle公司内部数据库培训资料Oracle公司内部数据库培训资料
Oracle公司内部数据库培训资料
 
Php
Php Php
Php
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档
 
5, initialization & cleanup
5, initialization & cleanup5, initialization & cleanup
5, initialization & cleanup
 
改善程序设计技术的50个有效做法
改善程序设计技术的50个有效做法改善程序设计技术的50个有效做法
改善程序设计技术的50个有效做法
 
SQL Loader & Bulk Insert 大量資料匯入工具
SQL Loader & Bulk Insert 大量資料匯入工具SQL Loader & Bulk Insert 大量資料匯入工具
SQL Loader & Bulk Insert 大量資料匯入工具
 
11
1111
11
 
Sql语句编写优化和基本原理总结
Sql语句编写优化和基本原理总结Sql语句编写优化和基本原理总结
Sql语句编写优化和基本原理总结
 
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
 
Js的国(转载)
Js的国(转载)Js的国(转载)
Js的国(转载)
 
前端测试
前端测试前端测试
前端测试
 
Python xmlrpc-odoo
Python xmlrpc-odooPython xmlrpc-odoo
Python xmlrpc-odoo
 
SurveyiOSCodingStyleFromAppleDocument
SurveyiOSCodingStyleFromAppleDocumentSurveyiOSCodingStyleFromAppleDocument
SurveyiOSCodingStyleFromAppleDocument
 
Ch10
Ch10Ch10
Ch10
 
希望科技研发部变量命名及编码规范
希望科技研发部变量命名及编码规范希望科技研发部变量命名及编码规范
希望科技研发部变量命名及编码规范
 
Ch07
Ch07Ch07
Ch07
 
CSS规范:
CSS规范:CSS规范:
CSS规范:
 

En vedette (12)

Probnezno2015 ukr
Probnezno2015 ukrProbnezno2015 ukr
Probnezno2015 ukr
 
Higher Certificate - International Trade
Higher Certificate - International TradeHigher Certificate - International Trade
Higher Certificate - International Trade
 
Сухорукова А.М. Обчислювальна культура учнів
Сухорукова А.М. Обчислювальна  культура  учнівСухорукова А.М. Обчислювальна  культура  учнів
Сухорукова А.М. Обчислювальна культура учнів
 
ByHours.com
ByHours.comByHours.com
ByHours.com
 
білки
білкибілки
білки
 
Elaborar un climograma con calc de OpenOffice
Elaborar un climograma con calc de OpenOfficeElaborar un climograma con calc de OpenOffice
Elaborar un climograma con calc de OpenOffice
 
3k muz-mist-lobov-13
3k muz-mist-lobov-133k muz-mist-lobov-13
3k muz-mist-lobov-13
 
WordCamp Seattle 2011 Presentation
WordCamp Seattle 2011 PresentationWordCamp Seattle 2011 Presentation
WordCamp Seattle 2011 Presentation
 
вимоги до оцінювання 22.08.2016
вимоги до оцінювання  22.08.2016вимоги до оцінювання  22.08.2016
вимоги до оцінювання 22.08.2016
 
риби !!
риби !!риби !!
риби !!
 
PRIMEROS AUXILIOS I
PRIMEROS AUXILIOS  IPRIMEROS AUXILIOS  I
PRIMEROS AUXILIOS I
 
А.М.Гончаренко. Модель роботи з літературним твором
А.М.Гончаренко. Модель роботи з літературним творомА.М.Гончаренко. Модель роботи з літературним твором
А.М.Гончаренко. Модель роботи з літературним твором
 

Similaire à NeteaseBlog Objective-C Style Guide

前端基础知识回顾
前端基础知识回顾前端基础知识回顾
前端基础知识回顾Wu tianhao
 
第五章:Struts2标签库
第五章:Struts2标签库第五章:Struts2标签库
第五章:Struts2标签库shmily7788
 
3 hibernate映射元素和类型
3 hibernate映射元素和类型3 hibernate映射元素和类型
3 hibernate映射元素和类型Zelin Wang
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试lydiafly
 
Spring入门纲要
Spring入门纲要Spring入门纲要
Spring入门纲要yiditushe
 
Kissy模块化实践
Kissy模块化实践Kissy模块化实践
Kissy模块化实践yiming he
 
02 Objective-C
02 Objective-C02 Objective-C
02 Objective-CTom Fan
 
Google protocol buffers简析
Google protocol buffers简析Google protocol buffers简析
Google protocol buffers简析wavefly
 
3. java basics
3. java basics3. java basics
3. java basicsnetdbncku
 
Backbone js and requirejs
Backbone js and requirejsBackbone js and requirejs
Backbone js and requirejsChi-wen Sun
 
Django development
Django developmentDjango development
Django developmentloveyudu
 
ES5 introduction
ES5 introductionES5 introduction
ES5 introductionotakustay
 
107个常用javascript语句 oss 计算技术 - ossez info of tech
107个常用javascript语句   oss 计算技术 - ossez info of tech107个常用javascript语句   oss 计算技术 - ossez info of tech
107个常用javascript语句 oss 计算技术 - ossez info of techYUCHENG HU
 
JdonFramework中文
JdonFramework中文JdonFramework中文
JdonFramework中文banq jdon
 
第1讲 开始编写程序
第1讲 开始编写程序第1讲 开始编写程序
第1讲 开始编写程序ruandao
 
【 I Love Joomla 】- Joomla!佈景製作教學
【 I Love Joomla 】- Joomla!佈景製作教學【 I Love Joomla 】- Joomla!佈景製作教學
【 I Love Joomla 】- Joomla!佈景製作教學ilovejoomla
 
Sql Server 高级技巧系列之三整体优化
Sql Server 高级技巧系列之三整体优化Sql Server 高级技巧系列之三整体优化
Sql Server 高级技巧系列之三整体优化向 翔
 
認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算建興 王
 

Similaire à NeteaseBlog Objective-C Style Guide (20)

前端基础知识回顾
前端基础知识回顾前端基础知识回顾
前端基础知识回顾
 
第五章:Struts2标签库
第五章:Struts2标签库第五章:Struts2标签库
第五章:Struts2标签库
 
3 hibernate映射元素和类型
3 hibernate映射元素和类型3 hibernate映射元素和类型
3 hibernate映射元素和类型
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试
 
Spring入门纲要
Spring入门纲要Spring入门纲要
Spring入门纲要
 
Kissy模块化实践
Kissy模块化实践Kissy模块化实践
Kissy模块化实践
 
02 Objective-C
02 Objective-C02 Objective-C
02 Objective-C
 
Google protocol buffers简析
Google protocol buffers简析Google protocol buffers简析
Google protocol buffers简析
 
3. java basics
3. java basics3. java basics
3. java basics
 
Backbone js and requirejs
Backbone js and requirejsBackbone js and requirejs
Backbone js and requirejs
 
Django development
Django developmentDjango development
Django development
 
ES5 introduction
ES5 introductionES5 introduction
ES5 introduction
 
Hibernate
HibernateHibernate
Hibernate
 
107个常用javascript语句 oss 计算技术 - ossez info of tech
107个常用javascript语句   oss 计算技术 - ossez info of tech107个常用javascript语句   oss 计算技术 - ossez info of tech
107个常用javascript语句 oss 计算技术 - ossez info of tech
 
JdonFramework中文
JdonFramework中文JdonFramework中文
JdonFramework中文
 
第1讲 开始编写程序
第1讲 开始编写程序第1讲 开始编写程序
第1讲 开始编写程序
 
【 I Love Joomla 】- Joomla!佈景製作教學
【 I Love Joomla 】- Joomla!佈景製作教學【 I Love Joomla 】- Joomla!佈景製作教學
【 I Love Joomla 】- Joomla!佈景製作教學
 
Sql Server 高级技巧系列之三整体优化
Sql Server 高级技巧系列之三整体优化Sql Server 高级技巧系列之三整体优化
Sql Server 高级技巧系列之三整体优化
 
認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算
 
Structs2簡介
Structs2簡介 Structs2簡介
Structs2簡介
 

NeteaseBlog Objective-C Style Guide

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n