コード匂い127 -可変定数
9700 ワード
何か定数を宣言します.しかし、あなたはそれを変異することができます.
最少の驚き原則違反 のカップリング
施行 定数を避ける.彼らはテストではしゃべりにくい. 文脈
定数 結論
クレジット
TL;DR: Use inmutable constants
問題
解決策
文脈
我々は、コンピュータプログラミングの最初のコースで定数を宣言することを学んだ.
いつものように、何かが一定ならばそれは重要ではありません.
変異しなければ重要である.
サンプルコード
間違い
const DISCOUNT_PLATINUM = 0.1;
const DISCOUNT_GOLD = 0.05;
const DISCOUNT_SILVER = 0.02;
//Since variables are constants we cannot reassign them
const DISCOUNT_PLATINUM = 0.05; //Error
//We can group them
const ALL_CONSTANTS = {
DISCOUNT: {
PLATINUM = 0.1;
GOLD = 0.04;
SILVER = 0.02;
},
};
const ALL_CONSTANTS = 3.14; //Error
ALL_CONSTANTS.DISCOUNT.PLATINUM = 0.08; //NOT AN ERROR. WTF!
const ALL_CONSTANTS = Object.freeze({
DISCOUNT:
PLATINUM = 0.1;
GOLD = 0.05;
SILVER = 0.02;
});
const ALL_CONSTANTS = 3.14; //Error
ALL_CONSTANTS.DISCOUNT.PLATINUM = 0.12; //NOT AN ERROR. WTF!
右
export const ALL_CONSTANTS = Object.freeze({
DISCOUNT: Object.freeze({
PLATINUM = 0.1;
GOLD = 0.05;
SILVER = 0.02;
}),
});
const ALL_CONSTANTS = 3.14; //Error
ALL_CONSTANTS.DISCOUNT.PLATINUM = 0.12; //ERROR
//Code works, but it is coupled and we cannot test it
Class TaxesProvider {
applyPlatinum(product);
}
//Now we can couple to a interface (the protocol of taxes provider)
//Since class has no setters it is constant an immuatable
//And we can replace it on tests
検出
[ X ]半自動
変更された値を見つけるために突然変異テストを行うことができます.
タグ
間違い
const DISCOUNT_PLATINUM = 0.1;
const DISCOUNT_GOLD = 0.05;
const DISCOUNT_SILVER = 0.02;
//Since variables are constants we cannot reassign them
const DISCOUNT_PLATINUM = 0.05; //Error
//We can group them
const ALL_CONSTANTS = {
DISCOUNT: {
PLATINUM = 0.1;
GOLD = 0.04;
SILVER = 0.02;
},
};
const ALL_CONSTANTS = 3.14; //Error
ALL_CONSTANTS.DISCOUNT.PLATINUM = 0.08; //NOT AN ERROR. WTF!
const ALL_CONSTANTS = Object.freeze({
DISCOUNT:
PLATINUM = 0.1;
GOLD = 0.05;
SILVER = 0.02;
});
const ALL_CONSTANTS = 3.14; //Error
ALL_CONSTANTS.DISCOUNT.PLATINUM = 0.12; //NOT AN ERROR. WTF!
右
export const ALL_CONSTANTS = Object.freeze({
DISCOUNT: Object.freeze({
PLATINUM = 0.1;
GOLD = 0.05;
SILVER = 0.02;
}),
});
const ALL_CONSTANTS = 3.14; //Error
ALL_CONSTANTS.DISCOUNT.PLATINUM = 0.12; //ERROR
//Code works, but it is coupled and we cannot test it
Class TaxesProvider {
applyPlatinum(product);
}
//Now we can couple to a interface (the protocol of taxes provider)
//Since class has no setters it is constant an immuatable
//And we can replace it on tests
検出
[ X ]半自動
変更された値を見つけるために突然変異テストを行うことができます.
タグ
結論
突然変異は非常に重要です.
我々は正しいツールでそれを実施する必要があります.
関係
コード匂い86 -変なconst配列
マキシ・コンティ・ 月25日・ 1分読む
#javascript
#oop
#programming
#codenewbie
コード匂い107 -変数再利用
マキシ・コンティ・ Dec 1 ' 21・ 2分読む
#oop
#programming
#webdev
#tutorial
コード匂い02 -定数とマジックナンバー
マキシ・コンティ・ 10月21日・ 1分読む
#beginners
#codenewbie
#100daysofcode
#codequality
詳しい情報
コード匂い86 -変なconst配列
マキシ・コンティ・ 月25日・ 1分読む
#javascript
#oop
#programming
#codenewbie
コード匂い107 -変数再利用
マキシ・コンティ・ Dec 1 ' 21・ 2分読む
#oop
#programming
#webdev
#tutorial
コード匂い02 -定数とマジックナンバー
マキシ・コンティ・ 10月21日・ 1分読む
#beginners
#codenewbie
#100daysofcode
#codequality
詳しい情報
クレジット
この香りは触発された
Sangharsh LohakareのUnsplashによる写真
You start digging in the code. The more you dig, the more stuff you turn up. Eventually you dig yourself into a hole you can’t get out of. To avoid digging your own grave, refactoring must be done systematically.
エリックガンマ
ソフトウェア工学大引用
マキシ・コンティ・ Dec 28 ' 20・ 13分読む
#codenewbie
#programming
#quotes
#software
この記事はCodesmellシリーズの一部です.
あなたのコードの臭い部分を見つける方法
マキシ・コンティ・ May 21 ' 21・ 4分読む
#codenewbie
#tutorial
#codequality
#beginners
Reference
この問題について(コード匂い127 -可変定数), 我々は、より多くの情報をここで見つけました
https://dev.to/mcsee/code-smell-127-mutable-constants-26dj
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
You start digging in the code. The more you dig, the more stuff you turn up. Eventually you dig yourself into a hole you can’t get out of. To avoid digging your own grave, refactoring must be done systematically.
ソフトウェア工学大引用
マキシ・コンティ・ Dec 28 ' 20・ 13分読む
#codenewbie
#programming
#quotes
#software
あなたのコードの臭い部分を見つける方法
マキシ・コンティ・ May 21 ' 21・ 4分読む
#codenewbie
#tutorial
#codequality
#beginners
Reference
この問題について(コード匂い127 -可変定数), 我々は、より多くの情報をここで見つけました https://dev.to/mcsee/code-smell-127-mutable-constants-26djテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol