今天來和大家聊聊那些讓人哭笑不得的編程技巧。
你知道嗎,有時候,我們程序員的一些“小技巧”能讓我們成為公司里不可或缺的存在,但這些技巧,可能并不是那么值得推廣。
不過,為了讓大家樂一樂,我還是決定分享一下這些“技巧”。
準備好了嗎?讓我們開始吧!
1. 縮短變量名
首先,讓我們聊聊變量命名。你知道的,變量名越短,代碼看起來越簡潔,我們就能有更多的時間去思考更深層次的邏輯問題。比如:
Good ????
let a = 42;
而不是:
Bad ????
let age = 42;
2. 不要寫注釋
接下來,我們聊聊注釋。你知道嗎,三行代碼不寫注釋,足以讓你的同事問你十八遍,這樣他們就徹底離不開你了。比如:
Good ????
const cdr = 700;
而不是:
Bad ????
// 700ms的數量是根據UX A/B測試結果進行經驗計算的。
// @查看: <詳細解釋700的一個鏈接>
const callbackDebounceRate = 700;
3. 盡可能把代碼寫成一行
有時候,我們為了減少項目體積,會手動壓縮代碼,比如:
Good ????
document.location.search.replace(/(^\?)/,'').split('&').reduce(function(o,n){n=n.split('=');o[n[0]]=n[1];return o},{})
而不是:
Bad ????
document.location.search
.replace(/(^\?)/, '')
.split('&')
.reduce((searchParams, keyValuePair) => {
keyValuePair = keyValuePair.split('=');
searchParams[keyValuePair[0]] = keyValuePair[1];
return searchParams;
}, {})
4. 不要處理錯誤
錯誤處理?那是什么?我們的代碼是完美的,沒有錯誤!比如:
Good ????
try {
// 意料之外的情況。
} catch (error) {
// tss... ??
}
而不是:
Bad ????
try {
// 意料之外的情況。
} catch (error) {
setErrorMessage(error.message);
// and/or
logError(error);
}
5. 廣泛使用全局變量
全球化的時代,我們的代碼也要跟上步伐。比如:
Good ????
let x = 5; function square() {
x = x ** 2;
} square(); // 現在x是25
而不是:
Bad ????
let x = 5; function square(num) {
return num ** 2;
} x = square(x); // 現在x是25
6. 備用變量
未雨綢繆,萬一用到了呢?比如:
Good ????
function sum(a, b, c) {
const timeout = 1300;
const result = a + b;
return a + b;
}
而不是:
Bad ????
function sum(a, b) {
return a + b;
}
7. 如果語言允許,不要執行類型檢查
無類型才是最好的類型。比如:
Good ????
function sum(a, b) {
return a + b;
} // 在這里享受沒有注釋的快樂
const guessWhat = sum([], {}); // -> "[object Object]"
const guessWhatAgain = sum({}, []); // -> 0
而不是:
Bad ????
function sum(a: number, b: number): ?number {
// 當我們在JS中不做置換和/或流類型檢查時,覆蓋這種情況。
if (typeof a !== 'number' && typeof b !== 'number') {
return undefined;
}
return a + b;
} // 這個應該在轉換/編譯期間失敗。
const guessWhat = sum([], {}); // -> undefined
好的,小林君繼續給大家爆料,讓我們的“編程技巧”更加豐富多彩!
8. 代碼「Plan B」
準備一些永遠也運行不到的代碼,它們可以作為你的「Plan B」。比如:
Good ????
function square(num) {
if (typeof num === 'undefined') {
return undefined;
} else {
return num ** 2;
}
return null; // 這就是我的"Plan B".
}
而不是:
Bad ????
function square(num) {
if (typeof num === 'undefined') {
return undefined;
}
return num ** 2;
}
9. 嵌套的三角法則
邏輯簡潔明了,一看就能懂。比如:
Good ????
function someFunction() {
if (condition1) {
if (condition2) {
asyncFunction(params, (result) => {
if (result) {
for (;;) {
if (condition3) {
}
}
}
})
}
}
}
而不是:
Bad ????
async function someFunction() {
if (!condition1 || !condition2) {
return;
}
const result = await asyncFunction(params);
if (!result) {
return;
}
for (;;) {
if (condition3) {
}
}
}
10. 混合縮進
避免縮進,因為它們會使復雜的代碼在編輯器中占用更多的空間。如果你不喜歡回避他們,那就和他們搗亂。比如:
Good ????
const fruits = ['apple',
'orange', 'grape', 'pineapple'];
const toppings = ['syrup', 'cream',
'jam',
'chocolate'];
const desserts = [];
fruits.forEach(fruit => {
toppings.forEach(topping => {
desserts.push([fruit, topping]);
});
})
而不是:
Bad ????
const fruits = ['apple', 'orange', 'grape', 'pineapple'];
const toppings = ['syrup', 'cream', 'jam', 'chocolate'];
const desserts = []; fruits.forEach(fruit => {
toppings.forEach(topping => {
desserts.push([fruit, topping]);
});
})
好了,今天的分享就到這里了。這些技巧雖然聽起來有點搞笑,但它們確實能讓我們成為公司里那個“不可或缺的人”。
不過,我建議大家還是不要真的去實踐這些技巧,畢竟,寫出清晰、可維護的代碼才是我們作為程序員的真正追求。
該文章在 2024/12/20 10:48:32 編輯過