Re: [请益] 新人常出包

楼主: GALINE (天真可爱CQD)   2014-08-16 20:11:30
※ 引述《iPhoto (iPhoto)》之铭言:
: 我是新人 工作不到三个月 在一家网络业写php
: [中略]
: 原因都归咎于 粗心
: [中略]
: 连这种小细节都做不好以后怎写大架构的code呢 QQ
我是个不新人,焊板子一年写 Java 五年,现在在一家网络业写 PHP 写了一年
我非常的粗心,code 写一写结果有语法错误还想推出去是常有的事情
其他逻辑上的问题就更不用说了,变量名称打或把测试 code 留在程式里面是常有的
而所幸我在一间让我能够学习成长的公司
我学到一件很重要,能大幅提升 code 品质,但是会稍微让心灵变的扭曲的事情
- 要歇斯底里地认为眼前所有东西都有可能会犯错
对于写 Code 的部分,这概念有个很帅的洋文名字叫做 Defensive Programing
例如说一些常被提到的“基础”做法
- 别人呼叫自己写的函数可能会传入奇怪的东西,所以输入变量一定要检查形态
(这对PHP这种变量形态整个混乱的语言尤其重要)
- 使用者输入可能被塞入奇怪的东西,所以一定要做好 filter 或 escape
背后的思想都是这种让人觉得病态但让程式变得健康的歇斯底里...
然后 code 写完了,准备要推出去了,这时候我开始歇斯底里地觉得自己一定会
写烂什么东西,所以
- 要检查程式语法有没有问题
- 要检查程式逻辑有没有问题
- 要思考万一这边上线之后出了问题会是什么问题,然后去检查那些东西
首先就是肉眼检查,看逻辑有没有问题,看跨号引号有没有加
在测试环境测看看有没有问题
不过当然,我不相信我靠自己就能检查出问题,所以我需要工具帮助
例如最基本的, PHP 档案推出去之前要用 php -l 检查语法是否正确
进阶一点的,程式要过自动测试程式,这边上面推文有大概提到
不过如果是 PHP 网页,一开始又没有考虑 unit test,要能做到大概是得整套重写...
(没办法,PHP 如果丑起来真的是很丑,很丑,很丑...[回音])
讲到这边我就得提到 git,git 这对大多数人来说只(?)是版本控制系统
但对我来说,是我歇斯底里防治的其中一环
首先不管要推什么 code 我都会在 git add 之后再做一次 git diff
作者: qrtt1 (有些事,有时候。。。)   2014-08-16 20:38:00
再多学学自动测试的方法,让精神不要太紧绷。太紧绷会忽略掉一些该注意的周边问题。目前的眼光太过焦中在避免错误了
作者: agreerga (鸭毛)   2014-08-16 21:02:00
TDD
作者: manlike ( )   2014-08-16 21:24:00
测试再多都没用, 写程式没想到状况, 写测试会想到?能测试的很有限, 重点还是写程式的素养~TDD 又是一个造神产物, 好像很厉害, 就像脱裤子放屁一般
作者: viper9709 (阿达)   2014-08-16 21:35:00
觉得很基本阿~并不算歇斯底里
作者: CRPKT (crpkt)   2014-08-16 23:30:00
推这篇, 省略检查的风险会转化成技术债, 之后还是要还
作者: aacs0130 (湛靈)   2014-08-17 02:03:00
推推,越写越知道要注意什么
作者: neversay (子不语)   2014-08-17 09:09:00
推这篇,正确的观念,身为资深工程师必须是paranoid
作者: andymai (人生只有一次)   2014-08-17 09:13:00
有素养就代表不会有疏忽?测试程式要保证的就是在修修改改的情况下还"至少"能确定思考过的案例都是对的~而不是连没想过的都想保证~没想过的就算是有素养也不会考虑到啊...
作者: neo5277 (I am an agent of chaos)   2014-08-17 15:18:00
跟防卫性驾驶一样 小心驶得万年船
作者: laikyo (六元)   2014-08-18 12:43:00
有学有推

Links booklink

Contact Us: admin [ a t ] ucptt.com