美文网首页iOS开发实用技术程序员iOS Developer
OC思考 | 为私有方法加前缀,真的有必要吗?

OC思考 | 为私有方法加前缀,真的有必要吗?

作者: 无夜之星辰 | 来源:发表于2019-03-02 16:25 被阅读11次

《Effective OC》第20条:为私有方法加前缀。

作者建议为私有方法加上前缀,理由有二:

  1. 有助于调试,因为可以快速区分私有方法和公有方法;
  2. 便于修改方法名。

第一点显而易见就不多说了。
第二点,公有方法由于别人要用,所以不能随便改(比方说如果masonry的接口频繁改动使用者肯定受不了);私有方法影响不到别人,可以随便改。你给私有方法加上前缀,就能快速区分哪些是公有方法哪些是私有方法,你也就因此知道了哪些方法可以改哪些不能改

唉,我感觉这第二点就是第一点的扩展。

《Effective OC》在iOS开发者中毋庸置疑是一本非常权威的书了,看到这一条,你是否立即给私有方法加上前缀以提升自己代码的逼格呢?

至于我,虽然经常为了装逼之事而绞尽脑汁,但这个时候还是停下来思考了一番。

加前缀是为了更好的区分公有方法和私有方法。但问题是,日常开发中,很多时候,并没有那么多公有方法。比如一个controller,里面有十几个私有方法,但公有方法或许只有一个构造方法,如:

- (instancetype)initWithGoodsID:(NSString *)goodsID;

甚至有时候都没有自定义构造方法,只有一个生命周期方法viewDidLoad:

这个时候,区分公有和私有的意义何在?

所有私有方法前面都加一个p_真的显得很多余,更关键的是,这反而降低了可读性。想象一下你去看你同事写的controller,方法列表一展开,呈现在眼前的一连串方法全是p_开头的,此时,你会不会情不自禁的说一句:“卧槽”?

萌新可能会觉得这种操作很规范很有逼格,但是一定要把握好这个度,不要学到个知识就赶紧强行运用

我一般只会在封装比较通用的库时才给私有方法加前缀,比如说我封装了一个toast(地址:https://github.com/CaiWanFeng/AlertToastHUD,强行推广一波哈哈哈),公有方法不少:

.h文件

这个时候,给私有方法加上前缀就真的是注重细节的体现了:

.m文件

就拿show toast那一堆方法来说,只有一个私有方法:

+ (void)p_showWithMessage:(NSString *)message image:(NSString *)imageName duration:(NSTimeInterval)duration style:(CQToastStyle)style;

这是一个全能show方法(关于全能方法可以查阅这本书的第16条),其它所有show方法都会调用它。

假如有一天我把这个库上传到CocoaPods,在更新这个库的时候,我能修改的就只有这个没有暴露出去的方法。即使我很长一段时间没有过问这个库,当初自己写的代码已经忘得差不多了,有一天突然想起了它,并且想给它添加一个功能,当我再次阅读代码的时候,这个p_前缀,可以很好的提示我只有这个是私有方法,其他方法你不能改,改了会影响到使用这个库的人

这就是给私有方法加前缀的现实意义。

因此我觉得:“私有方法加前缀,便于修改方法名。”这一点更多的是说给准备封装组件、框架的开发者的。

私有方法加不加前缀得视情况而定,最终的衡量标准依旧是代码的可读性,虽然影响不大,但你不得不承认这就是细节的体现。

逼格来自细节,强行装逼往往适得其反,只有无形装逼才能深入人心。

相关文章

  • OC思考 | 为私有方法加前缀,真的有必要吗?

    《Effective OC》第20条:为私有方法加前缀。 作者建议为私有方法加上前缀,理由有二: 有助于调试,因为...

  • 《Effective Objective-C 2.0 》 阅读笔

    第20条:为私有方法名加前缀 Objective-C语言没办法将方法标为私有,但是可以通过命名惯例体现出“私有方法...

  • 52个有效方法(20) - 为私有方法加前缀

    为私有方法加前缀好处 有助于调试,因为据此可以很容易地把公有方法和私有方法区分。 便于修改方法名或方法签名。对于公...

  • 【Effective Objective-C 2.0 读书笔记】

    第二十条:为私有方法名加前缀 【要点】 给私有方法的名称加上前缀,这样可以很容易的将其同公开方法区分开。 不要单用...

  • 私有变量(上)

    // 如果只有方法的实现, 没有方法的声明, 那么该方法就是私有方法 // 在OC中没有真正的私有方法, 因为OC...

  • iOS 为私有方法名加前缀

    一个类所做的事情通常都要比从外面看到的更多。编写类的实现代码时,经常要写一些只在内部使用的方法。应该为这些方法的名...

  • 1.1 OC中的私有方法

    本小节知识点: 【掌握】OC中的私有变量 【掌握】OC中的私有方法 1.OC中的私有变量 在类的实现即.m文件中也...

  • iOS-面试题2

    1、OC 能实现私有化吗?答:方法的私有化,声明即外漏,不声明不外漏。( .m 可以实现私有化。)2、OC 中有...

  • 为私有方法名加前缀--Effective笔记

    Objective-C 是不能将方法 限定于某个范围内 1,给私有方法的名称加上前缀,这样可以很容易的将其同公共方...

  • objective-c访问私有变量

    oc没有真正的私有变量,私有方法。通过骗过编译器,我们可以获取我们想要的变量或方法,本文主要记录oc继承中,如何访...

网友评论

    本文标题:OC思考 | 为私有方法加前缀,真的有必要吗?

    本文链接:https://www.haomeiwen.com/subject/ztwnyqtx.html