如何写出烂代码
重构
当你发现现有的结构满足不了现有的功能,这是重构的信号。很遗憾,为了赶进度,当这些信号出现时,你没有放在第一位去考虑,随着增量的开发,再回头准备下手重构,有一种牵一发动全身的感觉。
烂代码的由来
词不达意
代码写出来的目的是给人看的,一般你写的代码都不会由你维护。
emmmm 随意的命名,给阅读代码的人带来巨大的负担。自己看两天的代码也会有一种雾里看花的感觉。
二随一变
这个是在开发过程中,两个对象都随着一个对象变,又勤勤恳恳的写了两遍。这个时候,当发生一点变化,我要找到全部随变的代码,两个一块修改…改的手都累了,眼也花了
我就不改变参数的个数
现有的函数不能满足最新的需求,哎呀,我得在往这个函数中传一个参数,emmm,好麻烦,试试能不能在现有的参数中得到我想要的参数,还可以,就这样吧。于是,开始循环,整个函数已经不堪重负了….满篇的if else
来来来 我的麻花真好看
写了一个函数,哎呀,我这边需要和这个函数差不多的函数。哎呀,传一个标志,里面判断吧。这麻花不是一般的好看啊
const getData => (isAdd) {
if (isAdd) {
.....
}
// 共用代码
if(isAdd) {
.....
}
// 共用代码
if (isAdd) {
.....
}
}
repeat yourself
做spa的时候,五个页面都是一个list,于是我勤勤恳恳的写了五个list。这是在做ui的时候。在接数据的时候,我发现这几个页面的整体都是一样的,唯一不同的就是里面的item是不一样的,那我为什么还要写五遍呢?
其实开发的时候,就是ctrl+c和ctrl+v,那个时候还庆幸,因为把功能划分的十分清楚,我在每个页面map一遍,还挺简单的。沉浸在这种欢乐中,导致忘了这个repeat的操作。于是,动手写个一个生成list的function后,每个组件的代码两行就可以搞定了。
磨刀不误砍柴工
对待一个复杂的问题,首先要勾勒出它大概的轮廓,把能想到的全列上,以此先做出一个好的架构。
边写边想看是一个需要摒弃的习惯(对于我自己来说)。
这次新做的搜索,我先写好ui,在接数据之前,我能大概想到是什么个情况。于是我开始下手写了。
写着写着,我发现,嗯 导航需要条件,下面的list需要条件,右边的筛选也需要这个条件。筛选和list是属于一个组件中,我已经写到单独的list这一块了,有种写不下去的感觉,于是我开始将它们共用的数据全部放在父组件。这对于开发中的时间,是一个巨大的浪费,因为这意味着我之前的工作是白做的。这个时候,我开始拿起纸和笔,开始分析我应该怎么去规划…尽管我再分析的时候,把能预见的问题都想到了,但是在开发过程中还是遇到了未知的问题..写代码的仔细分析很重要….开发过程中的清晰头脑也很重要
先写到这….