楼主:
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再多学学自动测试的方法,让精神不要太紧绷。太紧绷会忽略掉一些该注意的周边问题。目前的眼光太过焦中在避免错误了
作者:
manlike ( )
2014-08-16 21:24:00测试再多都没用, 写程式没想到状况, 写测试会想到?能测试的很有限, 重点还是写程式的素养~TDD 又是一个造神产物, 好像很厉害, 就像脱裤子放屁一般
作者: CRPKT (crpkt) 2014-08-16 23:30:00
推这篇, 省略检查的风险会转化成技术债, 之后还是要还
作者:
aacs0130 (æ¹›éˆ)
2014-08-17 02:03: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有学有推