paint-brush
কীভাবে আপনার কোডের দুর্গন্ধযুক্ত অংশগুলি খুঁজে পাবেন [অংশ XXXII]দ্বারা@mcsee
806 পড়া
806 পড়া

কীভাবে আপনার কোডের দুর্গন্ধযুক্ত অংশগুলি খুঁজে পাবেন [অংশ XXXII]

দ্বারা Maximiliano Contieri9m2023/03/08
Read on Terminal Reader
Read this story w/o Javascript

অতিদীর্ঘ; পড়তে

এটির গন্ধ আছে কারণ সম্ভবত এমন অনেক উদাহরণ রয়েছে যেখানে এটি সম্পাদনা বা উন্নত করা যেতে পারে। এই গন্ধগুলির বেশিরভাগই এমন কিছুর ইঙ্গিত যা ভুল হতে পারে। অতএব, সেগুলিকে প্রতি স্থির করার প্রয়োজন নেই... (যদিও আপনার এটির দিকে নজর দেওয়া উচিত।) পূর্ববর্তী কোড গন্ধআপনি এখানে আগের সমস্ত কোড গন্ধ (পার্ট i - XXXI) খুঁজে পেতে পারেন।
featured image - কীভাবে আপনার কোডের দুর্গন্ধযুক্ত অংশগুলি খুঁজে পাবেন [অংশ XXXII]
Maximiliano Contieri HackerNoon profile picture

এটির গন্ধ রয়েছে কারণ সম্ভবত এমন অনেক উদাহরণ রয়েছে যেখানে এটি সম্পাদনা বা উন্নত করা যেতে পারে।


এই গন্ধগুলির বেশিরভাগই এমন কিছুর ইঙ্গিত যা ভুল হতে পারে। অতএব, সেগুলিকে নিজের প্রতি স্থির করার প্রয়োজন নেই... (যদিও আপনার এটির দিকে নজর দেওয়া উচিত।)

পূর্ববর্তী কোড গন্ধ

আপনি এখানে আগের সমস্ত কোড গন্ধ (Part i - XXXI) খুঁজে পেতে পারেন।


চল অবিরত রাখি...


কোড গন্ধ 156 - অন্তর্নিহিত অন্য

আমরা আমাদের প্রথম প্রোগ্রামিং দিনে যদি/অন্যথা শিখি। তারপর আমরা অন্য ভুলে যাই।


TL; DR: স্পষ্টভাবে বলুন। এমনকি এলসের সাথেও।

সমস্যা

সমাধান

  1. স্পষ্ট অন্য লিখুন

প্রসঙ্গ

যদি আমরা একটি IF বাক্যে তাড়াতাড়ি ফিরে আসি তবে আমরা অন্য অংশটি বাদ দিতে পারি।


পরে, আমরা 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); }

সনাক্তকরণ

  • [x] স্বয়ংক্রিয়


আমরা সিনট্যাক্স ট্রি পরীক্ষা করতে পারি এবং সেগুলিকে পার্স করতে পারি এবং অন্য কিছু না থাকার জন্য সতর্ক করতে পারি।


আমরা তাদের পুনরায় লিখতে এবং মিউটেশন পরীক্ষা করতে পারি।

ট্যাগ

  • শর্তাবলী

উপসংহার

এই ধরনের গন্ধ জনসাধারণের মধ্যে অনেক বিতর্ক এবং ঘৃণা নিয়ে আসে।


আমাদের অবশ্যই মতামত বিনিময় করতে হবে এবং প্রতিটি পক্ষ-বিপক্ষকে মূল্য দিতে হবে।

সম্পর্ক

কোড গন্ধ 102 - তীর কোড

কোড গন্ধ 36 - স্যুইচ/কেস/else if/else/if স্টেটমেন্ট

অধিক তথ্য

ইমপ্লিসিট এলস ব্যবহার করা বন্ধ করুন

কখন ইমপ্লিসিট এলস ব্যবহার করবেন

দ্রুত ব্যর্থ

কীভাবে চিরতরে বিরক্তিকর আইএফ থেকে মুক্তি পাবেন

ক্রেডিট

আনস্প্ল্যাশে এলেনা মোজভিলোর ছবি


সফ্টওয়্যার দলগুলির সবচেয়ে বড় সমস্যাটি নিশ্চিত করা যে সবাই বুঝতে পারছে অন্য সবাই কী করছে৷


মার্টিন ফাওলার


কোড গন্ধ 157 - 0 এ ব্যালেন্স

আজ, আমি আমার ওয়ালেটে একটি অর্থপ্রদান আশা করছিলাম। ভারসাম্য ছিল 0. আমি আতঙ্কিত.


TL;DR: নাল 0 নয়। ত্রুটি 0 নয়। শুধু 0 হল 0।

সমস্যা

  • নালস
  • ইউএক্স
  • ব্যবহারযোগ্যতা

সমাধান

  1. একটি শূন্য এবং একটি ত্রুটি মধ্যে একটি স্পষ্ট পার্থক্য করুন.

প্রসঙ্গ

আমি নিরাপত্তা সমস্যা সম্পর্কে অনেক পড়া.


বিশেষ করে ক্রিপ্টোতে।


গত সপ্তাহে, আমি একটি ক্রিপ্টো হ্যাক থ্রেড সম্পর্কে পড়েছি।


যখন আমার মানিব্যাগ আমাকে ব্যালেন্স হিসাবে 0 দেখিয়েছিল, আমি আতঙ্কিত হয়েছিলাম।


এটা শুধু একটি UX গন্ধ ছিল.


ব্লকচেইনটি অগম্য ছিল 💩

কোডের উদাহরণ

ভুল

 """ 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 = "https://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 = "https://blockchain.info/q/addressbalance/" + address response = requests.get(url) if response.status_code == 200: return response.text else: raise BlockchainNotReachableError("Error reaching blockchain")

সনাক্তকরণ

  • [x] ম্যানুয়াল


এটি একটি নকশা গন্ধ.


আমরা প্যাটার্ন খুঁজে পেতে পারি যখন একটি ব্যতিক্রম বা রিটার্ন কোড নিক্ষেপ করা হয় এবং একটি 0 দিয়ে মাস্ক করা হয়।

ট্যাগ

  • ইউএক্স

উপসংহার

সর্বদা গাইড হিসাবে ন্যূনতম বিস্ময় নীতি অনুসরণ করুন।

সম্পর্ক

কোড গন্ধ 12 - শূন্য

কোড গন্ধ 139 - ইউজার ইন্টারফেসে বিজনেস কোড

কোড গন্ধ 73 - প্রত্যাশিত ক্ষেত্রে ব্যতিক্রম

কোড গন্ধ 72 - রিটার্ন কোড

অধিক তথ্য

শূন্য: বিলিয়ন ডলার ভুল

ক্রেডিট

আনস্প্ল্যাশে জেসমিন সেসলারের ছবি

দাবিত্যাগ

কোড গন্ধ শুধু আমার মতামত .


নলের সাথে আমার আসল সমালোচনা হল যে এটি আপনার প্রোগ্রামটি পরীক্ষা না করে দ্রুত চালাতে বা চেক করার সাথে ধীর গতিতে চালাতে হবে কিনা তা বেছে নেওয়ার অপ্রয়োজনীয় সমস্ত যন্ত্রণা আবার ফিরিয়ে আনে।


টনি হোয়ার (নাল উদ্ভাবক)


সফটওয়্যার ইঞ্জিনিয়ারিং মহান উক্তি


কোড গন্ধ 158 - ভেরিয়েবল পরিবর্তনশীল নয়


আপনি একটি ভেরিয়েবলের জন্য একটি মান নির্ধারণ করেন এবং এটি ব্যবহার করেন তবে এটি কখনই পরিবর্তন করবেন না।


TL;DR: পরিবর্তনশীলতার বিষয়ে ঘোষণামূলক হন।

সমস্যা

  • পঠনযোগ্যতা
  • Bijection পরিবর্তনশীলতা সম্মান.
  • সম্ভাব্য কর্মক্ষমতা এবং মেমরি সমস্যা.

সমাধান

  1. ভেরিয়েবলটিকে একটি ধ্রুবক এ পরিবর্তন করুন এবং এর পরিধিতে পরিষ্কার হন।

রিফ্যাক্টরিং

রিফ্যাক্টরিং 003 - এক্সট্রাক্ট কনস্ট্যান্ট

রিফ্যাক্টরিং 008 - ভেরিয়েবলকে কনস্ট্যান্টে রূপান্তর করুন

প্রসঙ্গ

আমরা সবসময় ডোমেইন থেকে শিখছি।


কখনও কখনও আমরা অনুমান করি যে 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

সনাক্তকরণ

  • [x] স্বয়ংক্রিয়


অনেক লিন্টার চেক করে যে ভেরিয়েবলের শুধু একটি অ্যাসাইনমেন্ট আছে কিনা।


আমরা মিউটেশন পরীক্ষাও করতে পারি, এবং পরীক্ষাগুলি ভেঙে যায় কিনা তা দেখার জন্য পরিবর্তনশীল পরিবর্তন করার চেষ্টা করতে পারি।

ট্যাগ

  • পরিবর্তনশীলতা

উপসংহার

পরিবর্তনশীল সুযোগ পরিষ্কার হলে আমাদের নিজেদেরকে এবং রিফ্যাক্টরকে চ্যালেঞ্জ করতে হবে, এবং আমরা এর বৈশিষ্ট্য এবং পরিবর্তনশীলতা সম্পর্কে আরও শিখি।

সম্পর্ক

কোড গন্ধ 116 - ভেরিয়েবল 'var' দিয়ে ঘোষিত

কোড গন্ধ 127 - পরিবর্তনযোগ্য ধ্রুবক

কোড গন্ধ 107 - ভেরিয়েবল পুনরায় ব্যবহার

কোড গন্ধ 02 - ধ্রুবক এবং ম্যাজিক সংখ্যা

অধিক তথ্য

মিউট্যান্টদের মন্দ শক্তি

দাবিত্যাগ

কোড গন্ধ শুধু আমার মতামত .

ক্রেডিট

আনস্প্ল্যাশে নোয়া বুশারের ছবি


একটি জটিল সিস্টেম যা কাজ করে তা একটি সাধারণ সিস্টেম থেকে বিকশিত হয়েছে যা কাজ করে।


জন গ্যাল


CoDe SmElL 159 - mixEd_cASeI

গুরুতর উন্নয়ন অনেক বিভিন্ন মানুষ দ্বারা সম্পন্ন করা হয়. আমাদের একমত হতে শুরু করতে হবে।


TL;DR: ভিন্ন কেস রূপান্তর মিশ্রিত করবেন না

সমস্যা

  • পঠনযোগ্যতা
  • রক্ষণাবেক্ষণযোগ্যতা

সমাধান

  1. একটি কেস স্ট্যান্ডার্ড চয়ন করুন


  2. এর ওপর ধরে রাখুন

প্রসঙ্গ

যখন বিভিন্ন লোক একসাথে সফ্টওয়্যার তৈরি করে, তখন তাদের ব্যক্তিগত বা সাংস্কৃতিক পার্থক্য থাকতে পারে।

কেউ ক্যামেলকেস 🐫, অন্যরা স্নেক_কেস 🐍, MACRO_CASE🗣️ এবং আরও অনেকে পছন্দ করে।


কোডটি সহজবোধ্য এবং পঠনযোগ্য হওয়া উচিত।

কোডের উদাহরণ

ভুল

 { "id": 2, "userId": 666, "accountNumber": "12345-12345-12345", "UPDATED_AT": "2022-01-07T02:23:41.305Z", "created_at": "2019-01-07T02:23:41.305Z", "deleted at": "2022-01-07T02:23:41.305Z" }

ঠিক

 { "id": 2, "userId": 666, "accountNumber": "12345-12345-12345", "updatedAt": "2022-01-07T02:23:41.305Z", "createdAt": "2019-01-07T02:23:41.305Z", "deletedAt": "2022-01-07T02:23:41.305Z" // This doesn't mean THIS standard is the right one }

সনাক্তকরণ

  • [x] স্বয়ংক্রিয়

আমরা আমাদের লিন্টারদের আমাদের কোম্পানির বিস্তৃত নামকরণের মান সম্পর্কে বলতে পারি এবং সেগুলি প্রয়োগ করতে পারি।


যখনই নতুন লোক সংস্থায় আসে, একটি স্বয়ংক্রিয় পরীক্ষা বিনীতভাবে তাকে/তার/.. কোড পরিবর্তন করতে বলা উচিত।

ব্যতিক্রম

যখনই আমাদের সুযোগ-সুবিধার বাইরের কোডের সাথে ইন্টারঅ্যাক্ট করার প্রয়োজন হয়, তখন আমাদের ক্লায়েন্টের মান ব্যবহার করা উচিত, আমাদের নয়।

ট্যাগ

  • নামকরণ

উপসংহার

মান সঙ্গে ডিল করা সহজ.


আমাদের তাদের প্রয়োগ করতে হবে।

সম্পর্ক

কোড গন্ধ 48 - মান ছাড়া কোড

অধিক তথ্য

একটি নাম ঠিক কি - পার্ট I দ্য কোয়েস্ট

সমস্ত নামকরণ প্রথা

দাবিত্যাগ

কোড গন্ধ শুধু আমার মতামত .

ক্রেডিট

আনস্প্ল্যাশে উলফগ্যাং হাসেলম্যানের ছবি


আপনার যদি অনেকগুলি বিশেষ ক্ষেত্রে থাকে তবে আপনি এটি ভুল করছেন।


ক্রেগ জেরুনি


কোড গন্ধ 160 - অবৈধ আইডি = 9999

ম্যাক্সিন্ট একটি অবৈধ আইডির জন্য একটি খুব ভাল নম্বর। আমরা এটি কখনই পৌঁছাব না।


TL;DR: অবৈধ আইডির সাথে আসল আইডি জোড়া দেবেন না। আসলে: আইডি এড়িয়ে চলুন।

সমস্যা


  • আপনি আপনার ধারণার চেয়ে তাড়াতাড়ি অবৈধ আইডিতে পৌঁছাতে পারেন।


  • অবৈধ আইডিগুলির জন্যও নাল ব্যবহার করবেন না।


  • কলার থেকে ফাংশন পর্যন্ত পতাকা কাপলিং।

সমাধান

  1. বিশেষ বস্তুর সাথে বিশেষ কেস মডেল করুন।


  2. 9999, -1, এবং 0 এড়িয়ে চলুন যেহেতু তারা বৈধ ডোমেন অবজেক্ট এবং বাস্তবায়ন কাপলিং।


  3. নাল অবজেক্টের পরিচয় দাও

প্রসঙ্গ

কম্পিউটিংয়ের প্রাথমিক দিনগুলিতে, ডেটা টাইপগুলি কঠোর ছিল।


তারপরে আমরা বিলিয়ন ডলারের ভুল আবিষ্কার করেছি।


তারপরে আমরা বড় হয়েছি এবং বহুরূপী বিশেষ মানগুলির সাথে বিশেষ পরিস্থিতিতে মডেল করেছি।

কোডের উদাহরণ

ভুল

 #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)

সনাক্তকরণ

  • [x] আধা-স্বয়ংক্রিয়


আমরা কোডে বিশেষ ধ্রুবক এবং বিশেষ মান পরীক্ষা করতে পারি।

ট্যাগ

  • খালি

উপসংহার

বাহ্যিক শনাক্তকারীর সাথে সম্পর্কিত করার জন্য আমাদের সংখ্যা ব্যবহার করা উচিত।


যদি কোন বাহ্যিক শনাক্তকারী বিদ্যমান না থাকে, তাহলে এটি একটি সংখ্যা নয়।

সম্পর্ক

কোড গন্ধ 120 - অনুক্রমিক আইডি

কোড গন্ধ 12 - শূন্য

অধিক তথ্য

শূন্য: বিলিয়ন ডলার ভুল

Y2K22 - ভুল যা আমাদের বিব্রত করে

দাবিত্যাগ

কোড গন্ধ শুধু আমার মতামত .

ক্রেডিট

আনস্প্ল্যাশে মার্কাস স্পিসকের ছবি


বাগগুলি কোণে লুকিয়ে থাকে এবং সীমানায় জড়ো হয়।


বরিস বেইজার


আরও 5টি কোড গন্ধ শীঘ্রই আসছে...