一線研發(fā)之聲 之 完美主義者的程序員特征
if((long_state_var==1)||(long_state_var==2)||((ch>0x2F)&&(ch<0x3A)))
do_something();
看到這種代碼,他就感覺渾身難受、頭暈惡心…..
狂吼一聲,這段代碼立馬會(huì)給改成這樣。
if ((long_state_var==1)||(long_state_var==2)
||((ch>0x2F)&&(ch<0x3A)))
{
do_something();
}
長字符行要換行,模塊要添加{}保護(hù),這是做人的底線。
再瞄一眼,會(huì)發(fā)現(xiàn)沒有空格也很讓人難過。
趕緊快速編輯了而下,舒了口氣。
if ( (long_state_var == 1)
|| (long_state_var == 2)
|| ((ch>0x2F) && (ch<0x3A)) )
{
do_something();
}
加上空格的美化,更有層次感。
當(dāng)他開始維護(hù)這段代碼,搞清楚邏輯后,無意義的常量就會(huì)被處理成這樣的,長變量名也會(huì)被適當(dāng)縮短。而0x2F、0x3A這種坑爹的的常量,則會(huì)被他心里狠狠地鄙視:
“丫丫的,原創(chuàng)者這是在炫智商、秀優(yōu)越嗎?”。
#define MODE_NAME_1 (1) /* 簡單描述模式1 */
#define MODE_NAME_2 (2) /* 簡單描述模式2 */
if ( (stat == MODE_NAME_1) || (stat == MODE_NAME_2)
|| ((ch>='0') && (ch<='9')) ) /* 數(shù)字字符 */
{
do_something(ch);
}
常量用宏替代,這樣的代碼意圖會(huì)比較清晰。
后來他感覺,還是有些不妥。干脆又改了下,最后變成這樣。
#include
……
if ( (stat == MODE_NAME_1) || (stat == MODE_NAME_2)
|| is_digit(ch) )
{
do_something(ch);
}
is_digit的加入,使得代碼與注釋渾然天成。
后來他在優(yōu)化過程中發(fā)現(xiàn),ch的值在99%的情況下都滿足'0'~'9',
這個(gè)時(shí)候,這段代碼又會(huì)被優(yōu)化成這樣的。
if (is_digit(ch))
{
do_something(ch);
}
else if ((stat == MODE_NAME_1) || (stat == MODE_NAME_2))
{
do_something(ch);
}
else
{
/*已考慮無誤*/
}
為了效率,可以犧牲一點(diǎn)代碼可閱讀性。
評(píng)論