代码槽点

原代码

typedef enum{
    UserSex_Man,
    UserSex_Woman
}UserSex;

@interface UserModel :NSObject

@property(nonatomic, strong) NSString *name;
@property (assign, nonatomic) int age;
@property (nonatomic, assign) UserSex sex;

- (id)initUserModelWithUserName:(NSString *)name withAge:(NSUInteger)age;

-(void)doLogIn;


@end

枚举处有如下几个槽点

  • 不应该用 typedef enum 这种 C 形式定义枚举;既然做 iOS,就用 Apple 提供的东西。
  • 性别规范书面的命名是 Gender/Male/Female,而非 Sex/Man/Woman/Boy/Girl 之类。
  • 这一点可能是我多虑了:Male 和 Female 应该是互斥的,结构上用 Union 比较合适。但仍使用 enum 的原因两个:一是常用且易读;二是现实世界情况复杂,不排除极端情况。
  • 要有前缀,且前缀以三个字母为宜。前缀个数其实是有争议的,目前绝大多数的代码,包括流行的开源库都是两个字母前缀,究其原因可能是两个字母更好记,而且苹果也不会刚刚好使用到和我们代码相同两个字母,so……实际情况和要求还是出入的。

类的地方有如下几个槽点

  • UserModel 的命名方式不太好。Model 是设计模型中的概念,不应该将其命名到具体的代码对象中,而且类型必须要有前缀,防止命名冲突,此处命名前缀取 BDK(Bai Du Knows)。
  • :NSObject 之间要有空格。
  • 属性定义的地方 property / 括号 / 类型 / *变量名 之间应该要有空格,此外符号 * 是和变量名紧贴。如 @property (nonatomic, copy) NSString* name; 就是一个不太好的命名习惯。
  • 括号内的修饰词按需按一定顺序排列,两个修饰词间的逗号后面应当有空格。具体的顺序没有硬性规定,我的习惯是 nonatomic 放前面,因为多数的属性修饰词都是 nonatomic,而其他修饰词却不一定一样,把 nonatomic 放前面看起来比较整齐。
  • NSString 类型变量用 copy 修饰比较安全。
  • 属性的类最好对齐。这点不知道算不算槽点,但对齐更好看(看下面的代码 NSString *userName; 和下面两行对齐)。
  • 属性 age 是非负整数,所以使用 int 不太好,而且最好不要使用 C 的类型,应该用 NSUInteger。
  • 方法本身的间隔类似的,参照下系统方法的命名,具体就不多说了,看我最终的代码间隔即可。
  • doLogIn 槽点太多:
    • 两个动词表示一个登录的意思,累赘不合理;
    • login 本身就是一个动词,如果非要拆开,应该是 logOn/logOff,而非 logIn;
    • 登录接口竟然没有参数。我使用了 NSDictionary 可以将所有登录需要的信息全放在里面,便于扩展和修改。
    • 登录方法没有返回值,无法了解登录情况,所以如果有个回调会更好。
  • 初始化方法的槽点也挺多:
    • 方法名中的 Model 和之前提到的问题一致;
    • 方法有返回值,所以方法名的开头应当是返回内容的名词形式,而非动词;
    • 根据方法名的意思推测,返回值应该是用户信息。既如此,应该直接用 BDKUserInfo 作为返回值类型。但也有可能这么做有其他用意,所以为了尊重原代码的意思,我还是将返回值设为 instancetype,返回一个关联类型。

更正过的代码

  • 前缀 BDK 取 Bai Du Knows
  • 为什么类的属性和方法不加前缀?因为它们编译后不在顶级符号表。而且主流开源库的属性和方法命名时,也没有对类的属性和方法加前缀,已经约定俗成。从可读性的角度来说,加前缀是一种无奈之举,降低了代码的可读性。
typedef NS_ENUM(NSInteger, BDKGender)
{
    BDKMale,
    BDKFemale
};

@interface BDKUserInfo : NSObject

@property (nonatomic, copy)   NSString *userName;
@property (nonatomic, assign) NSUInteger userAge;
@property (nonatomic, assign) Gender userGender;

/**
 *  登录百度知道
 *
 *  @param info         登录所需信息
 *  @param successBlock 登录成功 block
 *  @param failedBlock  登录失败 block
 */
- (void)loginWithInfo:(NSDictionary *)info
           successBlock:(void(^)(NSDictionary *resultInfo))successBlock
               failed:(void(^)(NSError *error))failedBlock;
               
/**
 *  初始化用户信息
 *
 *  @param userName 用户名
 *  @param userAge  用户年龄
 *
 *  @return 用户信息
 */
- (instancetype)userInfoInitialedByUserName:(NSString *)userName
                                     userAge:(NSUInteger)userAge;
                                
@end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,652评论 18 139
  • 晚上在健身房正练的虚脱的时候老爸发来视频,手机视频声音一响,就知道应该是爸妈,健身房信号不好,断断续续,也因为是节...
    Angelerqi阅读 335评论 0 0
  • 今天回到家儿子已经很积极的把作业做完了,正在看他喜爱的动画片。儿子说今天晚上老师和家长们跳广场舞,孩子妈妈也很想...
    程康妈妈阅读 251评论 0 0
  • 努力劝慰自己宽心,不想把不开心带到床上,他们说睡觉是一件开心的事情。 而现在我无法做到,一躺下便情绪泛滥。爬起来,...
    山南南阅读 242评论 0 1
  • 细细密密的雨如烟雾,听不到雨落的声音,只看到一朵朵伞花涌进校园。刚近教室,马老师就笑着对我说:孩子们早就盼着你来了...
    chunma阅读 464评论 0 2