코드 냄새 12 - Null
다중 의미 체계는 결합 및 오류로 이어집니다.
TL;DR: Null is schizofrenic and does not exist in real world. His creator regreted and programmers around the world suffer it. Don't be a part of it.
문제
솔루션
Null: 10억 달러의 실수
Maxi Contieri ・ 11월 18 '20 ・ 6분 읽기
예외
샘플 코드
잘못된
class CartItem{
constructor(price) {
this.price = price;
}
}
class DiscountCoupon {
constructor(rate){
this.rate = rate;
}
}
class Cart{
constructor(selecteditems, discountCoupon){
this.items = selecteditems;
this.discountCoupon = discountCoupon;
}
subtotal(){
return this.items.reduce((previous, current) => previous + current.price, 0);
}
total(){
if (this.discountCoupon == null)
return this.subtotal();
else
return this.subtotal() * (1 - this.discountCoupon.rate);
}
}
cart = new Cart([new CartItem(1), new CartItem(2), new CartItem(7)], new DiscountCoupon(0.15));
//10 - 1.5 = 8.5
cart = new Cart([new CartItem(1), new CartItem(2), new CartItem(7)], null);
//10 - null = 10
오른쪽
class CartItem{
constructor(price) {
this.price = price;
}
}
class DiscountCoupon {
constructor(rate){
this.rate = rate;
}
discount(subtotal){
return subtotal * (1 - this.rate);
}
}
class NullCoupon {
discount(subtotal){
return subtotal;
}
}
class Cart{
constructor(selecteditems, discountCoupon){
this.items = selecteditems;
this.discountCoupon = discountCoupon;
}
subtotal(){
return this.items.reduce((previous, current) => previous + current.price, 0);
}
total(){
return this.discountCoupon.discount(this.subtotal());
}
}
cart = new Cart([new CartItem(1), new CartItem(2), new CartItem(7)], new DiscountCoupon(0.15));
//10 - 1.5 = 8.5
cart = new Cart([new CartItem(1), new CartItem(2), new CartItem(7)], new NullCoupon());
//10 - nullObject = 10
발각
대부분의 Linter는 null 사용을 표시하고 경고할 수 있습니다.
태그
class CartItem{
constructor(price) {
this.price = price;
}
}
class DiscountCoupon {
constructor(rate){
this.rate = rate;
}
}
class Cart{
constructor(selecteditems, discountCoupon){
this.items = selecteditems;
this.discountCoupon = discountCoupon;
}
subtotal(){
return this.items.reduce((previous, current) => previous + current.price, 0);
}
total(){
if (this.discountCoupon == null)
return this.subtotal();
else
return this.subtotal() * (1 - this.discountCoupon.rate);
}
}
cart = new Cart([new CartItem(1), new CartItem(2), new CartItem(7)], new DiscountCoupon(0.15));
//10 - 1.5 = 8.5
cart = new Cart([new CartItem(1), new CartItem(2), new CartItem(7)], null);
//10 - null = 10
class CartItem{
constructor(price) {
this.price = price;
}
}
class DiscountCoupon {
constructor(rate){
this.rate = rate;
}
discount(subtotal){
return subtotal * (1 - this.rate);
}
}
class NullCoupon {
discount(subtotal){
return subtotal;
}
}
class Cart{
constructor(selecteditems, discountCoupon){
this.items = selecteditems;
this.discountCoupon = discountCoupon;
}
subtotal(){
return this.items.reduce((previous, current) => previous + current.price, 0);
}
total(){
return this.discountCoupon.discount(this.subtotal());
}
}
cart = new Cart([new CartItem(1), new CartItem(2), new CartItem(7)], new DiscountCoupon(0.15));
//10 - 1.5 = 8.5
cart = new Cart([new CartItem(1), new CartItem(2), new CartItem(7)], new NullCoupon());
//10 - nullObject = 10
대부분의 Linter는 null 사용을 표시하고 경고할 수 있습니다.
태그
결론
더 많은 정보
학점
사진 제공: Kurt Cotoaga on Unsplash
I couldn't resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years.
토니 호어
소프트웨어 엔지니어링 좋은 인용문
Maxi Contieri ・ 12월 28일 '20 ・ 13분 읽기
#codenewbie
#programming
#quotes
#software
이 기사는 CodeSmell 시리즈의 일부입니다.
코드에서 냄새 나는 부분을 찾는 방법
Maxi Contieri ・ 2021년 5월 21일 ・ 4분 읽기
#codenewbie
#tutorial
#codequality
#beginners
마지막 업데이트: 2021/06/16
Reference
이 문제에 관하여(코드 냄새 12 - Null), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/mcsee/code-smell-12-null-la4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
I couldn't resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years.
소프트웨어 엔지니어링 좋은 인용문
Maxi Contieri ・ 12월 28일 '20 ・ 13분 읽기
코드에서 냄새 나는 부분을 찾는 방법
Maxi Contieri ・ 2021년 5월 21일 ・ 4분 읽기
Reference
이 문제에 관하여(코드 냄새 12 - Null), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mcsee/code-smell-12-null-la4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)