इनमें से अधिकतर गंध कुछ गलत होने का संकेत हैं। इसलिए, उन्हें अपने आप ठीक करने की आवश्यकता नहीं है ... (हालांकि, आपको इसे देखना चाहिए।)
आप पिछले सभी कोड गंध (भाग i - XXXI) यहां पा सकते हैं।
हम अपने पहले प्रोग्रामिंग दिवस पर सीखते हैं अगर / और। फिर हम दूसरे को भूल जाते हैं।
टीएल; डीआर: स्पष्ट रहें। औरों के साथ भी।
बाद में, हम 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); }
इस तरह की गंध बहुत सारी सार्वजनिक बहस और नफरत लाती है।
कोड गंध 36 - स्विच/केस/अन्य यदि/अन्य/यदि कथन
कष्टप्रद आईएफएस से हमेशा के लिए कैसे छुटकारा पाएं
सॉफ्टवेयर टीमों पर सबसे बड़ा मुद्दा यह सुनिश्चित कर रहा है कि हर कोई समझता है कि हर कोई क्या कर रहा है।
मार्टिन फाउलर
आज, मुझे अपने बटुए में भुगतान की उम्मीद थी। बैलेंस 0 था। मैं घबरा गया।
टीएल; डीआर: शून्य 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")
जब कोई अपवाद या रिटर्न कोड फेंका जाता है और 0 के साथ मास्क किया जाता है तो हम पैटर्न पा सकते हैं।
कोड स्मेल 139 - यूजर इंटरफेस में बिजनेस कोड
कोड गंध 73 - अपेक्षित मामलों के लिए अपवाद
कोड स्मेल सिर्फ मेरी राय है।
नल के साथ मेरी वास्तविक आलोचना यह है कि यह अनावश्यक रूप से फिर से सभी पीड़ा को वापस लाता है कि यह चुनने के लिए कि क्या आपके कार्यक्रम को बिना जाँच के तेजी से चलाया जाए या जाँच के साथ धीमा चलाया जाए।
टोनी होरे (शून्य आविष्कारक)
सॉफ्टवेयर इंजीनियरिंग महान उद्धरण
आप किसी वेरिएबल को एक मान देते हैं और उसका उपयोग करते हैं लेकिन उसे कभी नहीं बदलते।
टीएल; डीआर: परिवर्तनशीलता पर घोषणात्मक बनें।
रिफैक्टरिंग 003 - लगातार निकालें
कभी-कभी हम अनुमान लगाते हैं कि MAPPER के साथ कोई मान बदल सकता है।
इससे मैजिक कांस्टेंट से भी बचा जा सकेगा।
<?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
जब चर का दायरा स्पष्ट हो, तो हमें खुद को चुनौती देनी चाहिए और रिफ्लेक्टर करना चाहिए, और हम इसके गुणों और परिवर्तनशीलता के बारे में अधिक सीखते हैं।
कोड स्मेल 116 - वेरिएबल्स की घोषणा 'var' के साथ
कोड स्मेल 127 - परिवर्तनशील स्थिरांक
कोड गंध 02 - स्थिरांक और जादू संख्या
कोड स्मेल सिर्फ मेरी राय है।
एक जटिल प्रणाली जो काम करती है, हमेशा एक साधारण प्रणाली से विकसित होती है जो काम करती है।
जॉन गैल
गंभीर विकास कई अलग-अलग लोगों द्वारा किया जाता है। हमें सहमत होना शुरू करना होगा।
टीएल; डीआर: अलग-अलग केस रूपांतरणों को न मिलाएं
{ "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 }
हम अपने लिंटरों को अपनी कंपनी के व्यापक नामकरण मानकों के बारे में बता सकते हैं और उन्हें लागू कर सकते हैं।
कोड गंध 48 - मानकों के बिना कोड
वास्तव में नाम क्या है - भाग I खोज
कोड स्मेल सिर्फ मेरी राय है।
यदि आपके पास बहुत अधिक विशेष मामले हैं, तो आप इसे गलत कर रहे हैं।
क्रेग ज़ेरोनी
अमान्य आईडी के लिए मैक्सिंट एक बहुत अच्छा नंबर है। हम उस तक कभी नहीं पहुंचेंगे।
टीएल; डीआर: अमान्य लोगों के साथ वास्तविक आईडी न जोड़ें। वास्तव में: आईडी से बचें।
फिर हमने बिलियन-डॉलर की गलती का आविष्कार किया।
#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)
Y2K22 - वह गलती जो हमें शर्मिंदा करती है
कोड स्मेल सिर्फ मेरी राय है।
कीड़े कोनों में दुबक जाते हैं और सीमाओं पर एकत्र हो जाते हैं।
बोरिस बेइज़र