這樣寫(xiě)的,一定是辣雞代碼!
? 以一種代碼已經(jīng)被混淆的方式命名變量 ? 變量/函數(shù)混合命名風(fēng)格 ? 不要寫(xiě)注釋 ? 使用母語(yǔ)寫(xiě)注釋 ? 盡可能混合不同的格式 ? 盡可能把代碼寫(xiě)成一行 ? 不要處理錯(cuò)誤 ? 廣泛使用全局變量 ? 創(chuàng)建你不會(huì)使用的變量 ? 如果語(yǔ)言允許,不要指定類型和/或不執(zhí)行類型檢查。 ? 你應(yīng)該有不能到達(dá)的代碼 ? 三角法則 ? 混合縮進(jìn) ? 不要鎖住你的依賴項(xiàng) ? 函數(shù)長(zhǎng)的比短的好 ? 不要測(cè)試你的代碼 ? 避免代碼風(fēng)格統(tǒng)一 ? 構(gòu)建新項(xiàng)目不需要 README 文檔 ? 保存不必要的代碼
? 以一種代碼已經(jīng)被混淆的方式命名變量
let?a?=?42;
let?age?=?42;
? 變量/函數(shù)混合命名風(fēng)格
let?wWidth?=?640;
let?w_height?=?480;
let?windowWidth?=?640;
let?windowHeight?=?480;
? 不要寫(xiě)注釋
const?cdr?=?700;
// 700ms的數(shù)量是根據(jù)UX A/B測(cè)試結(jié)果進(jìn)行經(jīng)驗(yàn)計(jì)算的。
//?@查看:?<詳細(xì)解釋700的一個(gè)鏈接>
const?callbackDebounceRate?=?700;
? 使用母語(yǔ)寫(xiě)注釋
//?Закрива?мо?модальне?в?конечко?при?виникненн??помилки.
toggleModal(false);
//?隱藏錯(cuò)誤彈窗
toggleModal(false);
? 盡可能混合不同的格式
let?i?=?['tomato',?'onion',?'mushrooms'];
let?d?=?[?"ketchup",?"mayonnaise"?];
let?ingredients?=?['tomato',?'onion',?'mushrooms'];
let?dressings?=?['ketchup',?'mayonnaise'];
? 盡可能把代碼寫(xiě)成一行
document.location.search.replace(/(^\?)/,'').split('&').reduce(function(o,n){n=n.split('=');o[n[0]]=n[1];return?o},{})
document.location.search
??.replace(/(^\?)/,?'')
??.split('&')
??.reduce((searchParams,?keyValuePair)?=>?{
????keyValuePair?=?keyValuePair.split('=');
????searchParams[keyValuePair[0]]?=?keyValuePair[1];
????return?searchParams;
??},
??{}
)
? 不要處理錯(cuò)誤
try?{
??//?意料之外的情況。
}?catch?(error)?{
??//?tss...??
}
try?{
??//?意料之外的情況。
}?catch?(error)?{
??setErrorMessage(error.message);
??//?and/or
??logError(error);
}
? 廣泛使用全局變量
let?x?=?5;
function?square()?{
??x?=?x?**?2;
}
square();?//?現(xiàn)在x是25
let?x?=?5;
function?square(num)?{
??return?num?**?2;
}
x?=?square(x);?//?現(xiàn)在x是25
? 創(chuàng)建你不會(huì)使用的變量
function?sum(a,?b,?c)?{
??const?timeout?=?1300;
??const?result?=?a?+?b;
??return?a?+?b;
}
function?sum(a,?b)?{
??return?a?+?b;
}
? 如果語(yǔ)言允許,不要指定類型和/或不執(zhí)行類型檢查。
function?sum(a,?b)?{
??return?a?+?b;
}
//?在這里享受沒(méi)有注釋的快樂(lè)
const?guessWhat?=?sum([],?{});?//?->?"[object?Object]"
const?guessWhatAgain?=?sum({},?[]);?//?->?0
function?sum(a:?number,?b:?number):??number?{
??//?當(dāng)我們?cè)贘S中不做置換和/或流類型檢查時(shí),覆蓋這種情況。
??if?(typeof?a?!==?'number'?&&?typeof?b?!==?'number')?{
????return?undefined;
??}
??return?a?+?b;
}
//?這個(gè)應(yīng)該在轉(zhuǎn)換/編譯期間失敗。
const?guessWhat?=?sum([],?{});?//?->?undefined
? 你應(yīng)該有不能到達(dá)的代碼
function?square(num)?{
??if?(typeof?num?===?'undefined')?{
????return?undefined;
??}
??else?{
????return?num?**?2;
??}
??return?null;?//?這就是我的"Plan?B".
}
function?square(num)?{
??if?(typeof?num?===?'undefined')?{
????return?undefined;
??}
??return?num?**?2;
}
? 三角法則
function?someFunction()?{
??if?(condition1)?{
????if?(condition2)?{
??????asyncFunction(params,?(result)?=>?{
????????if?(result)?{
??????????for?(;;)?{
????????????if?(condition3)?{
????????????}
??????????}
????????}
??????})
????}
??}
}
async?function?someFunction()?{
??if?(!condition1?||?!condition2)?{
????return;
??}
??const?result?=?await?asyncFunction(params);
??if?(!result)?{
????return;
??}
??for?(;;)?{
????if?(condition3)?{
????}
??}
}
? 混合縮進(jìn)
const?fruits?=?['apple',
??'orange',?'grape',?'pineapple'];
??const?toppings?=?['syrup',?'cream',
????????????????????'jam',
????????????????????'chocolate'];
const?desserts?=?[];
fruits.forEach(fruit?=>?{
toppings.forEach(topping?=>?{
????desserts.push([
fruit,topping]);
????});})
const?fruits?=?['apple',?'orange',?'grape',?'pineapple'];
const?toppings?=?['syrup',?'cream',?'jam',?'chocolate'];
const?desserts?=?[];
fruits.forEach(fruit?=>?{
??toppings.forEach(topping?=>?{
????desserts.push([fruit,?topping]);
??});
})
? 不要鎖住你的依賴項(xiàng)
$?ls?-la
package.json
$?ls?-la
package.json
package-lock.json
? 函數(shù)長(zhǎng)的比短的好
一個(gè)文件中10000行代碼是OK的。 一個(gè)函數(shù)體1000行代碼是OK的。 處理許多服務(wù)(第三方和內(nèi)部,也有一些工具、數(shù)據(jù)庫(kù)手寫(xiě)ORM和jQuery滑塊)在一個(gè)' service.js ' ?這是OK的。
? 不要測(cè)試你的代碼
? 避免代碼風(fēng)格統(tǒng)一
? 構(gòu)建新項(xiàng)目不需要 README 文檔
? 保存不必要的代碼
往期推薦

從String中移除空白字符的多種方式!?差別竟然這么大!

為什么程序員都不喜歡使用 switch ,而是大量的 if……else if ?

為啥不能用uuid做MySQL的主鍵!?
直面Java第329期:哪個(gè)命令可以監(jiān)控虛擬機(jī)各種運(yùn)行狀態(tài)信息?
深入并發(fā)第013期:拓展synchronized——鎖優(yōu)化
如果你喜歡本文,
請(qǐng)長(zhǎng)按二維碼,關(guān)注?Hollis.
轉(zhuǎn)發(fā)至朋友圈,是對(duì)我最大的支持。
評(píng)論
圖片
表情
