论一个方法只干一件事

289 阅读2分钟

最近在开发工作中越来越感受到一个原则的重要性:“一个方法只干一件事”,我已经记不清这句话从哪来的了,也可能是自己想出来的? 于是我顺着这句话想到了高内聚低耦合,这不就是这个原则的延伸么。本文记录下为什么会有这个心得,并且在可见的将来要坚持执行。
首先是功能性代码的独立,很多小的功能性代码有时候不注意就写到一些方法中,正确的做法是使用超过1次就独立出来。工具方法我就不举例了,这个很好理解。

其次是某控制器内的界面界面较复杂,并且以后会改需求。复杂指的是,一个页面使用stackView,并且有多种状态,需要专门的方法控制显示or隐藏,这个时候就不能把控制状态的代码耦合到数据和控件绑定的方法中,否则,更新状态,以及将来修改代码都会很乱。

关于第一种复杂页面的情况语言描述太苍白,举个例子吧,对于第一种情况假设有3个view1,view2,view3,每次显示2个有3种组合:

- (void)updateBaseState {
    view1.hidden = YES;
    view2.hidden = YES;
    view3.hidden = YES;
}
- (void)updateState1 {
    view1.hidden = NO;
    view2.hidden = NO;
}
- (void)updateState2 {
    view1.hidden = NO;
    view3.hidden = NO;
}
- (void)updateState3 {
    view2.hidden = NO;
    view3.hidden = NO;
}

每种状态的hidden要有专门的方法去负责,不要写在bindModel的方法内,同时要有基础的状态控制,防止状态显示的混乱。如果不使用stackView恐怕需要换别的写法,这种思路我认为并不是特别合适。这个文章提到的方法既不难也不高深,只是被UI折磨后的一点点实用性的心得。
在实践中我认为这种情况最清晰,需求变动之后也最容易修改,不知道各位怎么想,如果有批评指正,可以私信留言。