大多数这些气味只是一些可能出错的暗示。因此,它们本身不需要固定......(不过你应该调查一下。)
您可以在此处找到所有以前的代码味道(第一部分 - XXXI)。
我们在第一个编程日学习 if/else。然后我们忘记其他的。
TL;DR:要坚定。哪怕有相关人。
之后,我们删除 IF并使用多态性。
function carBrandImplicit(model) { if (model === 'A4') { return 'audi'; } return 'Mercedes-Benz'; }
function carBrandExplicit(model) { if (model === 'A4') { return 'audi'; } if (model === 'AMG') { return 'Mercedes-Benz'; } // Fail Fast throw new Exception('Model not found); }
这种气味带来了很多公众的争论和仇恨。
Code Smell 36 - Switch/case/else if/else/if 语句
app专业团队最明显的话题是狠抓每台人都理解某个人困什么样样的。
马丁福勒
今天,我希望钱包里有一笔付款。余额为0,我慌了。
TL;DR:Null 不再是 0。报错不再是 0。就 0 是 0。
""" Below code is automatically generated by code-davinci-002 on GTP3 Codex 1. check balance with blockchain 2. If blockchain is unreachable show 0 as the balance """ import requests import json def get_balance(address): url = "//blockchain.info/q/addressbalance/" + address response = requests.get(url) if response.status_code == 200: return response.text else: return 0
""" Below code is automatically generated by code-davinci-002 on GTP3 Codex 1. check balance with blockchain 2. If blockchain is unreachable throw an error """ import requests import json def get_balance(address): url = "//blockchain.info/q/addressbalance/" + address response = requests.get(url) if response.status_code == 200: return response.text else: raise BlockchainNotReachableError("Error reaching blockchain")
代码味道只是我的意见。
我对 Null 的真切进行批评是,它不用要地多次获得了须得进行是我不检杳的实际情况下下尽快执行程度是在检杳的实际情况下下慢慢的执行程度的所以生不如死。
托尼·霍尔(Null Inventor)
您为变量赋值并使用它,但从不更改它。
TL;DR:声明书可调性。
有时我们猜测一个值可以随MAPPER改变。
这也将避免Magic Constants 。
<?php function configureUser() { $password = '123456'; // Setting a password on a variable is another vulnerability // And Code Smell $user = new User($password); // Notice Variable doesn't change }
<?php define("USER_PASSWORD", '123456') function configureUser() { $user = new User(USER_PASSWORD); } // or function configureUser() { $user = new User(userPassword()); } function userPassword() : string { return '123456'; } // Case is an oversimplification as usual
我们必须在变量作用域清晰时挑战自我并重构,并且我们更多地了解它的属性和可变性。
代码味道只是我的意见。
一家有郊的复杂性系统软件老是被出现 要到一家有郊的容易系统软件演进来的的。
约翰高尔
严肃的开发是由许多不同的人完成的。我们必须开始同意。
TL;DR:不能结合有所差异的规模写转为
{ "id": 2, "userId": 666, "accountNumber": "12345-12345-12345", "UPDATED_AT": "2023-01-07T02:23:41.305Z", "created_at": "2020-01-07T02:23:41.305Z", "deleted at": "2023-01-07T02:23:41.305Z" }
{ "id": 2, "userId": 666, "accountNumber": "12345-12345-12345", "updatedAt": "2023-01-07T02:23:41.305Z", "createdAt": "2020-01-07T02:23:41.305Z", "deletedAt": "2023-01-07T02:23:41.305Z" // This doesn't mean THIS standard is the right one }
我们可以告诉我们的 linters 我们公司广泛的命名标准并执行它们。
代码味道只是我的意见。
若是 你有没有不多异常原因,而你就犯错误了。
克雷格·泽鲁尼
Maxint 是一个非常适合无效 ID 的数字。我们永远达不到。
TL;DR:也不要将真 ID 与无效的 ID 融入选用。史实上:预防 ID。
然后我们发明了十亿美元的错误。
#include "stdio.h" #include "stdlib.h" #include "stdbool.h" #define INVALID_VALUE 999 int main(void) { int id = get_value(); if (id==INVALID_VALUE) { return EXIT_FAILURE; // id is a flag and also a valid domain value } return id; } int get_value() { // something bad happened return INVALID_VALUE; } // returns EXIT_FAILURE (1)
#include "stdio.h" #include "stdlib.h" #include "stdbool.h" // No INVALID_VALUE defined int main(void) { int id; id = get_value(); if (!id) { return EXIT_FAILURE; // Sadly, C Programming Language has no exceptions } return id; } get_value() { // something bad happened return false; } // returns EXIT_FAILURE (1)
代码味道只是我的意见。
小虫电视剧潜伏在边上里,聚合在边际处。
鲍里斯·贝泽