Strikingly 要求我整理一份几百行差不多是我最高成就的代码给他们,来获得面试的机会。
我很纠结,他们想从几百行代码里看出什么来呢?
我第一个想到的是把我写过的轮子的核心类抽象成接口,整理到一起,好让他们看到我是如何设计我的轮子的。
然而我并没有发明过轮子。。
之后我觉得把包含了华丽技巧的代码整理到一起,应该能行。
然而什么是技巧呢,我好像并没有掌握过什么牛逼技巧啊。。
我很纠结,Strikingly 是我非常喜欢的公司,并且果然机会往往垂青有所准备的人,而我却没有准备好。。
我只能把自己最近花了2天写的脑图 Demo 的各部分代码发给了他们。。一个基于各种别人开发的框架/库的应用层面的东西。。
结果我确实没能成功加入 Strikingly 哈哈,不过官方原因跟代码不代码的无关。
好了,僵硬地切入正题,说说我理解的正确的代码:
1.逻辑清晰,书写工整简单:
就是易读。代码要能够快速被别人(1个月后的自己)读懂,并且相对简单的逻辑可以减少出错的几率。这里要求但不限于:变量名和函数名要语义化,逻辑代码尽量使用函数拆分开,必要的注释,美观且一致的代码风格。
2.接口简单:
不管是为自己还是其他人,简单优雅的接口会让你的代码更易被使用。这里要求合理地抽象业务逻辑,对代码进行适度封装。
3.容易被测试:
我所知道的人类是绝不可能写出绝对正确的程序的。那么我们只能在尽可能广的范围下确保程序不出错。这时候就要求代码容易被测试所覆盖,以证明代码在一个限定范围内的正确性。
4.从容应对需求变更:
我等杂碎但非咸鱼的程序猿追求的目标。
上述4点排名分先后(按实践的难易度排序)。