Objective-C代码洁癖患者

西虹市精神类疾病三假医院

诊断证明

姓名 我就叫Tom怎么了 科别 洁癖科
诊断日期 2017年07月07日 主治医师 刘继芬

病情描述

从事这一行当也有一段时间了。可以说是一个“iOS”初级开发者了。为什么iOS要被引起来?因为iOS分为许多版本。有的是IOS开发者、有的是ios开发者,而我是最普通的iOS开发者。写到这里我相信有很多人会说这人有病吧?这不都一样!但我不这么认为,如果你叫刘继芬,户口登记人员也是比较随意的人,给你写成“刘积分”,那你今后的生活将一团糟。其实iOS这三个字母的大小写是小事,但是这也证明了你对你所从事行业的尊重度。

从开始接触OC到现在,编码格式都是我最注意的地方。(先不说代码水平)从来不会要求别人怎么写格式,只是自己要求自己,按照苹果的代码格式游戏规则来,直到昨天看见了Ta写的一段代码。。。

//获取日期
-(NSString*)    huoquriqi:(NSDate*)d{
    NSString*riqi =@"";
    NSDateFormatter* df= nil;
    
    if (d !=nil      ) {
        
        if (df== nil)
        {
            df=[[NSDateFormatter alloc]init];
            
            
            
            
            
        }
        [df setTimeStyle:
NSDateFormatterFullStyle];
                [df setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
        [df setLocale:[NSLocale currentLocale]];
        riqi =[df stringFromDate:d];
        
    }
return riqi;
    
}

这是一个工具类方法,我需要使用到这个功能。看了之后彻底崩溃了,最有良心的是写了注释“获取日期”,然后从方法名到变量名再到格式。为什么“*”号后面有的加空格有的不加,有个加前面有的加后面?为什么换行格式也是那么随意。这段代码是可读的,但是可读性为0,有谁会有耐心去看。无奈修改了一下。

/* 
 * 获取日期
 *
 * @param date 传入日期date
 *
 * @return 格式化日期
 */
- (NSString *)getFormatTime:(NSDate *)date 
{
    NSString *returnValue = @"";
    NSDateFormatter *dateFormatter = nil;
    
    if (date != nil) {
        if (dateFormatter == nil) {
            dateFormatter = [[NSDateFormatter alloc]init];
        }
        [dateFormatter setTimeStyle:NSDateFormatterFullStyle];
        [dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
        [dateFormatter setLocale:[NSLocale currentLocale]];
        returnValue = [dateFormatter stringFromDate:date];
    }
    return returnValue;
}

不是说我的代码格式有多标准,至少让其他开发者看到的时候不是那么崩溃。最普通的大众格式,苹果官方使用的格式。这是一种游戏规则。

医生建议

  • 1.类命名方式

先从类的命名方式开始,见过很多以自己的名字命名的工程师。这样做并非不可,但是别人在看到这个liujifenViewController.h的时候是懵逼的。如果改成ChatViewController.h貌似会易读一些。最好在前面加上公司名称的缩写,比如TXChatViewController.h。增加前缀对于App的开发人员来说,可加可不加,因为不用考虑类名重复的问题。但是对于SDK开发的同学来说,如果第三方集成了你的SDK,但是类名重复了,那将是一件很囧的事情,显得很不专业。

  • 2.头文件声明

你会很纳闷,这个有什么说的?其实也是有说法的。比如功能相关#import <AVFoundation/AVFoundation.h>#import <CoreLocation/CoreLocation.h>等放在一起,控制器相关放在一起等等。最好在后面增加相关注释,以便其日后他人修改。(为啥要日后。。凭啥!?)
例:

#import <AVFoundation/AVFoundation.h>        // 音频
#import <CoreLocation/CoreLocation.h>        // 定位服务

#import "Gzip.h"                             // 压缩

#import "TXChatViewController.h"             // 聊天界面
#import "TXChatMessageTableViewCell.h"       // 消息cell

  • 3.添加代理

相信这一点大多数人会忽略“空格”。给大家演示一下

@interface TXChatViewController()<UITableViewDelegate,UITableViewDataSource>

是不是很正常?功能上没有任何影响。请仔细查看苹果的API文档,这里面会多出两个空格!

@interface TXChatViewController() <UITableViewDelegate, UITableViewDataSource>

第一个是“()”之后的一个空格,第二个是每个代理逗号“,”后面也会增加一个空格。

  • 4.声明全局变量

大部分写法:

@property(nonatomic,strong)UITableView*myTableView;

吹毛求疵的写法:

@property (nonatomic, strong) UITableView *myTableView;

对比一下,是不是更美观一些?

  • 5.方法名

方法名其实是非常重要的,万物皆方法,方法名让人不易理解,那还造毛万物。

-(UIButton*)button:(NSString *)string frame:(CGRect)rect color:(UIColor*)color{
    UIButton*button =[UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = rect;
    button.backgroundColor = color;
    [button setTitle:string forState:UIControlStateNormal];
    return button;
}

创建一个Button的工厂方法,本来是其乐融融的事,看到这个工厂后,我有了离开这个工厂的想法。

- (UIButton *)createButtonWithFrame:(CGRect)frame title:(NSString *)title backgroundColor:(UIColor *)color
{
    UIButton *kbutton = [UIButton buttonWithType:UIButtonTypeCustom];
    kbutton.frame = frame;
    kbutton.backgroundColor = color;
    [kbutton setTitle:title forState:UIControlStateNormal];
    
    return kbutton;
}

如果必要,可以加上注释。

  • 6.if else
if(ture)
{
    do something
}else
{
    do something
}

官方写法

if(ture) {
    do something
} else {
    do something
}
  • 7.#pragma mark - 的使用

个人不建议在一个Controller中写太多的代码,不易管理,耦合度高,但是如果业务没法拆离的时候,用上#pragma mark -何尝不是一种好方法。

#pragma mark - UI渲染

#pragma mark - TableView DataSource

#pragma mark - 网络请求

#pragma mark - 工厂方法

#pragma mark - 工具类

使得找东西很方便。

诊断结论

其实这并不是一个好程序员的评判标准,编程思想最为重要。但是代码模样就像一个外衣,以貌取人的事比比皆是。

  • 主治医师:刘继芬 (盖章)
  • 日期 2017年07月07日

我的代码格式仅供参考,并非准标准。还望大家多指教。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,200评论 4 61
  • 转载一篇Handler机制文章以加深理解http://blog.csdn.net/sinat_23092639/a...
    捉影T_T900阅读 209评论 3 1
  • 改版收入移除模式后,编辑如何处理 投稿量太大了,很多文章得不到及时的处理和反馈,打击了不少作者的积极性。简书决定从...
    曹门霞客行阅读 1,160评论 17 16
  • 我一直等待你看见 格桑花开 雪莲绽放 那是我的心绪 美丽盛大而忧伤 跃过春夏秋冬 穿过千山万水 纵看淡红尘浅语花开...
    冷小茶阅读 305评论 4 7
  • 费德里奇说我要打给我们公司的一个新员工,然后用电脑打电话给Dr.Dre的时候。。。我已经很累了。。。苹果就这样慢慢...
    初霁阅读 211评论 0 1