[導讀]在Facebook網站上有一個名為“Il Programmatore di Merda”(“ The Shitty Programmer”,中文俗譯為“粑粑程序猿”)的社區(qū)。我經常上去瀏覽,這個網站經常分享一些寫的爛的代碼和有關編程的話題。這不,今天我就看到一段令人難以置信的爛代碼,有圖有真相~
在Facebook網站上有一個名為“Il Programmatore di Merda”(“ The Shitty Programmer”,中文俗譯為“粑粑程序猿”)的社區(qū)。我經常上去瀏覽,這個網站經常分享一些寫的爛的代碼和有關編程的話題。這不,今天我就看到一段令人難以置信的爛代碼,有圖有真相:
本周最爛代碼
請各位仔細查看,上面的代碼錯誤太多,我一時不知該從哪兒說起。
如果你是一個初級開發(fā)工程師,本篇文章會幫你理解上述代碼中存在的一些嚴重的bug,希望各位同學引以為鑒。
我將上面的代碼摘錄下來,以便后面一起來討論。代碼如下:
<script>
function authenticateUser(username, password) {
var accounts = apiService.sql(
"SELECT * FROM users"
);
for (var i = 0; i < accounts.length; i++) {
var account = accounts [i];
if (account.username === username &&
account.password === password)
{
return true;
}
}
if ("true" === "true") {
return false;
}
}
$('#login').click(function() {
var username = $("#username").val();
var password = $("#password").val();
var authenticated = authenticateUser(username, password);
if (authenticated === true) {
$.cookie('loggedin', 'yes', { expires: 1 });
} else if (authenticated === false) {
$("error_message").show(LogInFailed);
}
});
script>
把代碼復制完的一時之間,我竟不知道從何說起了。上述錯誤大致分為 3 類:
安全問題
基本編程概念問題
代碼格式化問題
我們非常確定以下代碼能夠在客戶端運行,因為它已經包含在兩個
換一批
延伸閱讀