编程思想的整理
程序员文章站
2024-02-04 08:35:16
...
最近看了一篇大牛写的招聘记录及相关感受,里面说到招聘的一些要求,其中提到了编程思想。之前我一直注重撸码,却忽略了撸码过程中的学习。虽然说工作中不会过多的用到相关理论,但个人觉得招聘往后还是会越来越注重理论与实践的结合。言归正传,下面说下我整理的编程思想:
链式编程思想
链式编程其实就是通过点语法将多个操作连接成一句代码实现,提高代码的可读性。代表:Masonry框架
例如:
[self.coinView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.view).offset(60);
make.left.mas_equalTo(self.view).offset(20);
make.right.mas_equalTo(self.view).offset(20);
make.bottom.mas_equalTo(self.view);
}];
注意:block 中必须有一个返回值;
- 实现原理:通过block返回对象本身,并更新属性的值,具体方法实现在内部。
- 链式编程的特点:
- 可读性强;
- 编程性强;
- 代码简洁;
- 要求编程人员对业务能力强;
- 不利于代码调试
函数式编程思想
函数式编程是将操作写成方法,通过block实现的。跟链式编程的区别在于,链式编程是对属性block的操作,函数式编程是对以block或函数作为参数,并返回对象的一系列函数的操作。代表:AFNetworking
例如:
BOOL isEqual = [[calcul calculate:^int(int result) {
result += 5;
result *= 5;
return result;
}] equal:^BOOL(int result) {
return result == 25;
}];
- 实现原理:通过block实现,跟链式差不多,链式是在内部实现,函数式是在外部实现。
- 函数式编程特点:
- 必须有返回值(本身对象),把函数或者Block当做参数,block参数(需要操作的值)block返回值(操作结果)
响应式编程思想
响应式编程是一种基于异步数据流概念的编程范式。无需考虑调用顺序,只需要知道考虑结果,一个事件完成,会影响其他很多事件。代表:KVO。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(bannerDidClick:) name:EBBannerViewDidClickNotification object:nil];
-(void)bannerDidClick:(NSNotification*)noti{
//... = noti.object
//提示音播放停止
[_audioPlayer stop];
}
- 响应式编程特点
- 无调用顺序,一件事件完成,影响其他很多事件。