深恶痛绝重写setter和getter

一、写在前面:重写setter和getter的缺点:

 

1. 没有必要
2. 代码可读性大大降低
3. 容易造成逻辑混乱,引起意想不到的问题
 

二、没有必要

 

例子1: 使用重写get方法的方式初始化数据

- (NSMutableArray *)dataArray {
    if (_dataArray == nil) {
        _dataArray = [NSMutableArray array];
    }
    return _dataArray;
}

  

对于现在的处理器,这样做没有任何意义,并且需要写更多的代码,占更多的行数,这些在阅读代码时会造成一定程度的不便。

 

二、代码可读性大大降低

 

例子2:使用重写get方法的方式初始化视图

- (UITableView *)tableView {
    if (_tableView == nil) {
        _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 480) style:UITableViewStylePlain];
    }
    return _tableView;
}

 

例2 中只是初始化了一个非常简单的视图,可能需要初始化的是一个较为复杂的视图,这时就会有人说这个是懒加载的。

我非常同意对于复杂视图懒加载的必要性。

但懒加载并不是只有重写get方法一种方式,而重写get方法会使得代码可读性大大降低。这是最令我抓狂的事情了。

 

开发中,如果我们需要看别人的代码,很多时候我们并不是逐行地看的,而是靠搜索,搜索这个属性在哪里被用到了,搜索这个方法在哪里被调用了。

但如果使用重写get方法的方式,一搜索“.tableView”,可能会有一长溜的结果,如果更不幸,在init或者viewDidLoad等方法中没有使用到“.tableView”的话,你要花不定长的时间来搞明白到底哪次调用时初始化了。

有人可能会说,那你就在所有的地方都打上断点,然后运行一次,看哪里先调用,就是在哪里初始化的。

但是这大大降低了你看代码的速度,有更优的方式,为什么要采取这种方式。

 

降低可读性的问题,可能写代码的人感受不到,但读代码的人却是深有体会。

 

四、容易造成逻辑混乱,引起意想不到的问题

 

代码可读性降低,必然会引起逻辑混乱,虽然两者不是因果关系,但却是如影随形。

 

五、重写getter和setter的代替方案

 

- (void)createTableView {
    if (self.tableView == nil) {
        self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 480) style:UITableViewStylePlain];
    }
}

 

转载于:https://www.cnblogs.com/tangjuanj/p/8325052.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值