设计和实现
之前看一位老师的文章说,先设计再实现,如果先实现再设计会有诸多的问题,之前对这个事情认识不是很深刻,所以在这里组织一下。这几天又看了一段计算机科学的视频,所以结合最近遇到的一个比较复杂的问题一起来梳理一下。
- 为什么要设计:因为很多时候如果不进行设计是无法推演一个事情是否可行,如果不进行设计就只能在做到那里的时候去确定,但是这个时候很多代码已经写好了,及时发现有问题,也已经无法回头了,或者说回头的代价很大,因为设计的时候就是要通过自己的脑子模拟问题的解决,如果已经成了事实,模拟不模拟也没什么意义了
- 如何设计:我之前写过一个文章是如何设计一个组件,里面一个比较核心的话是确定组件的输入和输出,但是在组件内部设计的话,当你知道一个组件的输入的时候,首先就是要确定组件内部的数据结构,数据结构的错误会导致效率低下,甚至有严重的缺陷。比如我今天遇到的一个奇怪的问题就是因为数据结构不好导致多了好多工作量,js里的对象正常情况下是有序的,但是我今天再用对象组织一个列表的时候发现无序了,然后就用了很长时间去找为什么是无序的,最后发现在chrome中如果对象的key是数字的时候,就会默认按照数字大小排序,所以这里导致我多了很多的工作量处理这个奇怪的问题,当然,这个不完全是我的问题,chrome的问题是key为数字和字符串的时候不一致的问题。
- 当我们去推演一些问题的时候我们可以做很多的抽象,而且当我们确定下来一个抽象的时候就可以不管这些抽象的实现细节,就这样一步一步的把抽象完善,这样我们每一步的抽象都是可以为下一步抽象奠基。具体到代码上,当我们实现一个组件或者一个方法的时候,当我们测试充分的时候就可以不管其内部实现,只要当成一个黑盒用就可以了。
--2024-12-18