博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深恶痛绝重写setter和getter
阅读量:5342 次
发布时间:2019-06-15

本文共 1268 字,大约阅读时间需要 4 分钟。

一、写在前面:重写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

你可能感兴趣的文章
scrapy框架之递归解析和post请求
查看>>
Java 之泛型通配符 ? extends T 与 ? super T 解惑
查看>>
关于小程序后台post不到数据的问题
查看>>
mysql left join,right join,inner join用法分析
查看>>
Oracle scott解锁 以及连接数据库
查看>>
浅谈C语言中的联合体
查看>>
【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器
查看>>
照着书写的几个经典排序算法(插入、希尔、堆、归并、快排)
查看>>
[Swift]LeetCode753. 破解保险箱 | Cracking the Safe
查看>>
2017-2018-1 20155330《信息安全技术》实验二——Windows口令破解
查看>>
20155210 实验一 逆向与Bof基础
查看>>
20个有用的正则表达式
查看>>
PTA 02-线性结构3 Reversing Linked List (25分)
查看>>
.Net开源框架列表【转载】
查看>>
(转)Linux内核之进程和系统调用
查看>>
C#如何计算代码执行时间
查看>>
项目更新到公网服务器的操作步骤
查看>>
js练习- 给你一个对象,求有几层
查看>>
阿里前端一面
查看>>
Android 软键盘的显示和隐藏,这样操作就对了
查看>>