সংক্ষেপে: এটি নির্ভর করে
বিস্তারিত
আপনি কি পরিষ্কার, চকচকে জিনিস প্রয়োজন?
এখানে সাবধান হওয়ার মতো বিষয় রয়েছে এবং আপনার আসল, পরিমাপযোগ্য লাভ এবং কেবল আপনার ব্যক্তিগত পছন্দ এবং স্পর্শ কোডের সম্ভাব্য খারাপ অভ্যাসের মধ্যে সীমাটি চিহ্নিত করতে হবে।
আরও নির্দিষ্টভাবে, এটি জানুন:
এটি একটি বিরোধী-নিদর্শন, এবং এটি অন্তর্নির্মিত সমস্যাগুলির সাথে আসে:
- এটি আরও বর্ধনযোগ্য হতে পারে তবে প্রসারিত করা সহজ নয় ,
- এটি বুঝতে সহজ হতে পারে না ,
- শেষ, তবে অবশ্যই এখানে নয়: আপনি পুরো কোডটি ধীর করতে পারেন।
কেউ কেউ KISS নীতিটিকে রেফারেন্স হিসাবে উল্লেখও করতে পারে , তবে এখানে এটি পাল্টা স্বজ্ঞাত: অনুকূলিত উপায়টি কি সহজ উপায় বা ক্লিন আর্কিটেকচারিং উপায়? উত্তরটি নিখুঁতভাবে নিখুঁত নয়, যেমন নীচের বাকীটিতে ব্যাখ্যা করা হয়েছে।
YAGNI নীতি অন্যান্য সমস্যার সাথে সম্পূর্ণরূপে লম্ব নয়, কিন্তু এটি নিজে প্রশ্ন জিজ্ঞাসা করতে সাহায্য করে: আপনি এটি প্রয়োজন করতে যাচ্ছি?
আরও জটিল আর্কিটেকচারটি কি আরও রক্ষণাবেক্ষণের চেহারার পরিবর্তে সত্যই আপনার জন্য উপকার উপস্থাপন করে?
এটি একটি বড় পোস্টারে লিখুন এবং এটি আপনার স্ক্রিনের পাশে বা কর্মক্ষেত্রে রান্নাঘরের অঞ্চলে বা দেব সভাকক্ষে ঝুলিয়ে রাখুন। অবশ্যই আরও অনেকগুলি মন্ত্র রয়েছে যা নিজেকে পুনরাবৃত্তি করার মতো, তবে আপনি যখন "রক্ষণাবেক্ষণের কাজ" করার চেষ্টা করেন এবং এটি "উন্নত" করার তাগিদ অনুভব করেন তবে এই বিশেষটি গুরুত্বপূর্ণ important
আমাদের কোডটি "উন্নত" করা বা এমনকি কেবল এটি স্পর্শ করা, এমনকি অজ্ঞানহীনভাবে তৈরি হওয়া চাই, এটি এটি বোঝার চেষ্টা করার জন্য আমাদের পক্ষে স্বাভাবিক। এটি একটি ভাল জিনিস, কারণ এর অর্থ আমরা মতামতপ্রাপ্ত এবং অভ্যন্তরীনদের আরও গভীর বোঝার চেষ্টা করি, তবে এটি আমাদের দক্ষতা-স্তর, আমাদের জ্ঞানের সাথেও আবদ্ধ (কী কী ভাল বা না কী আপনি কীভাবে সিদ্ধান্ত নিতে পারেন? ভাল, নীচের বিভাগগুলি দেখুন ...), এবং আমরা যা মনে করি আমরা সফ্টওয়্যারটি জানি সে সম্পর্কে আমরা সমস্ত অনুমান করি ...:
- আসলে,
- আসলে করা দরকার,
- শেষ পর্যন্ত করার প্রয়োজন হবে,
- এবং এটি কত ভাল করে।
এটি কি সত্যিকারের অনুকূলিত হওয়া দরকার?
এই সমস্ত বলেছিল, কেন এটি প্রথম স্থানে "অনুকূলিত" হয়েছিল? তারা বলে যে অকালীন অপটিমাইজেশন সমস্ত অশুভের মূল, এবং আপনি যদি অনিবন্ধিত এবং আপাতদৃষ্টিতে অপ্টিমাইজড কোডটি দেখতে পান তবে সাধারণত আপনি ধরে নিতে পারেন যে এটি সম্ভবত অপ্টিমাইজেশনের বিধিগুলি অনুসরণ করে নি তবে অপ্টিমাইজেশান প্রচেষ্টাটির প্রয়োজন নেই এবং এটি ছিল কেবলমাত্র সাধারণ বিকাশকারীর হুব্রিস লাথি মারছে Yet
যদি তা হয়, তবে কোন সীমাতে এটি গ্রহণযোগ্য হবে? যদি এর প্রয়োজন হয় তবে এই সীমাটি বিদ্যমান রয়েছে এবং আপনাকে জিনিসগুলি উন্নত করার জন্য জায়গা দেয় বা এটিকে ছেড়ে দেওয়ার সিদ্ধান্ত নেওয়ার জন্য একটি হার্ড-লাইন।
এছাড়াও, অদৃশ্য বৈশিষ্ট্যগুলি থেকে সাবধান থাকুন। সম্ভাবনাগুলি হ'ল, এই কোডটির আপনার "এক্সটেনসিবল" সংস্করণ আপনাকে রানটাইমের সময় আরও মেমরি বাড়িয়ে তুলবে এবং এক্সিকিউটেবলের জন্য আরও বড় স্ট্যাটিক মেমরির পদচিহ্ন উপস্থাপন করবে। চকচকে ওও বৈশিষ্ট্যগুলি এগুলির মতো অপ্রয়োজনীয় ব্যয় নিয়ে আসে এবং এগুলি আপনার প্রোগ্রাম এবং এটির পরিবেশটি চালানোর কথা বলে।
পরিমাপ, পরিমাপ, পরিমাপ
গুগল এখন যেমন ভাবেন, এগুলি সবই ডেটা সম্পর্কে! আপনি যদি ডেটা দিয়ে এটি ব্যাক আপ করতে পারেন, তবে এটি প্রয়োজনীয়।
এই না, তাই পুরাতন কাহিনী যে প্রতি $ 1 উন্নয়নে ব্যয় জন্য এটি দ্বারা অনুসরণ করা হবে অন্তত পরীক্ষার মধ্যে $ 1 এবং অন্তত সমর্থনে $ 1 (কিন্তু সত্যিই, এটা একটা অনেক কিছু)।
পরিবর্তনগুলি অনেক কিছুই প্রভাবিত করে:
- আপনি একটি নতুন বিল্ড উত্পাদন প্রয়োজন হতে পারে;
- আপনার নতুন ইউনিট পরীক্ষা লিখতে হবে (অবশ্যই যদি সেখানে কিছু না থাকে এবং আপনার আরও বর্ধমান আর্কিটেকচার সম্ভবত আরও বেশি জায়গা রাখে, কারণ আপনার বাগগুলির জন্য আরও পৃষ্ঠ রয়েছে);
- আপনি নতুন পারফরম্যান্স পরীক্ষা (নিশ্চিত এই ভবিষ্যতে স্থিতিশীল থাকে করতে, এবং যেখানে bottlenecks দেখতে), এবং লেখা উচিত ওসব করতে যাও চতুর ;
- আপনাকে এটি নথিভুক্ত করতে হবে (এবং আরও বর্ধিত করার অর্থ বিশদগুলির জন্য আরও বেশি জায়গা);
- আপনার (বা অন্য কেউ) এর কিউএতে এটির পুনরায় পরীক্ষা করা দরকার;
- কোডটি (প্রায়) কখনই বাগ-মুক্ত নয় এবং আপনাকে এটি সমর্থন করতে হবে।
সুতরাং এটি কেবল হার্ডওয়্যার রিসোর্স খরচ (এক্সিকিউশন স্পিড বা মেমরির পদচিহ্ন) নয় যা আপনাকে এখানে পরিমাপ করতে হবে এটি টিমের সংস্থান খরচও। লক্ষ্য লক্ষ্য নির্ধারণ, পরিমাপ করা, হিসাব করা, এবং উন্নয়নের উপর ভিত্তি করে অভিযোজিত উভয়কেই ভবিষ্যদ্বাণী করা দরকার।
এবং আপনার পরিচালক হিসাবে, এর অর্থ এটি বর্তমান বিকাশ পরিকল্পনায় ফিট করে, তাই এটি সম্পর্কে কথা বলুন এবং উগ্র গরু-বালক / সাবমেরিন / ব্ল্যাক-ওপ্স কোডিংয়ে প্রবেশ করবেন না।
সাধারণভাবে ...
হ্যাঁ কিন্তু...
আমাকে ভুল করবেন না, সাধারণভাবে, আমি আপনাকে পরামর্শ দিই কেন তাই করার পক্ষে হয়ে থাকি এবং আমি প্রায়শই এটির পক্ষে পরামর্শ করি। তবে আপনাকে দীর্ঘমেয়াদী ব্যয় সম্পর্কে সচেতন হওয়া দরকার।
নিখুঁত বিশ্বে এটি সঠিক সমাধান:
- কম্পিউটার হার্ডওয়্যার সময়ের সাথে সাথে আরও ভাল হয়,
- সংকলক এবং রানটাইম প্ল্যাটফর্ম সময়ের সাথে সাথে আরও ভাল হয়,
- আপনি কাছাকাছি থেকে নিখুঁত, পরিষ্কার, রক্ষণাবেক্ষণযোগ্য এবং পঠনযোগ্য কোড পান।
প্রস্তুতিতে:
আপনি এটি আরও খারাপ করতে পারে
এটি দেখার জন্য আপনার আরও চোখের বলের প্রয়োজন এবং যত বেশি আপনি এটিকে জটিল করবেন আপনার তত বেশি চোখের বলটি দরকার।
আপনি ভবিষ্যতের ভবিষ্যদ্বাণী করতে পারবেন না
আপনি কখনই এটির প্রয়োজন হয় এবং আপনি যদি "এক্সটেনশানগুলি" পুরানো ফর্মটি প্রয়োগ করা সহজতর ও দ্রুততর হতে পারতেন এবং এমনকি যদি তাদেরকে সুপার-অনুকূলিতকরণের প্রয়োজন হত তবে আপনি সম্পূর্ণ নিশ্চিততার সাথে জানতে পারবেন না ।
এটি পরিচালনার দৃষ্টিকোণ থেকে, সরাসরি লাভের জন্য একটি বিশাল ব্যয় উপস্থাপন করে।
এটি প্রক্রিয়া অংশ করুন
আপনি এখানে উল্লেখ করেছেন যে এটি একটি সামান্য পরিবর্তন, এবং আপনার কিছু নির্দিষ্ট বিষয় মনে আছে। আমি বলব যে এটি সাধারণত এ ক্ষেত্রে ঠিক আছে, তবে আমাদের বেশিরভাগেরই ছোট ছোট পরিবর্তনগুলির প্রায় ব্যক্তিগত কাহিনী রয়েছে, প্রায় শল্য চিকিত্সা-স্ট্রাইক সম্পাদনাগুলি, যা অবশেষে রক্ষণাবেক্ষণের দুঃস্বপ্নে পরিণত হয়েছিল এবং প্রায় অনুপস্থিত বা বিস্ফোরিত সময়সীমার কারণ জো প্রোগ্রামার এটি দেখতে পায় নি because কোডটির পিছনে কারণগুলি এবং এমন কিছু স্পর্শ করেছে যা করা উচিত হয়নি।
আপনার যদি এই জাতীয় সিদ্ধান্তগুলি পরিচালনা করার প্রক্রিয়া থাকে তবে আপনি সেগুলি থেকে ব্যক্তিগত প্রান্তটি সরিয়ে ফেলুন:
- আপনি যদি জিনিসগুলি সঠিকভাবে পরীক্ষা করেন তবে জিনিসগুলি নষ্ট হয়ে গেলে আপনি আরও দ্রুত জানতে পারবেন,
- যদি আপনি সেগুলি পরিমাপ করেন তবে আপনি জানতে পারবেন সেগুলি উন্নত হয়েছে কিনা,
- যদি আপনি এটি পর্যালোচনা করেন তবে আপনি জানতে পারবেন এটি লোককে ছুড়ে ফেলে দেয় কিনা।
পরীক্ষা কভারেজ, প্রোফাইলিং এবং ডেটা-সংগ্রহ জটিল rick
তবে অবশ্যই আপনার টেস্টিং কোড এবং মেট্রিকগুলি একই সমস্যা থেকে ভুগতে পারে যা আপনি আপনার আসল কোডটির জন্য এড়াতে চাইছেন: আপনি কি সঠিক জিনিসগুলি পরীক্ষা করেন এবং সেগুলি কি ভবিষ্যতের জন্য সঠিক জিনিস এবং আপনি কি সঠিকটি পরিমাপ করেন? কথা বলছ? '
তবুও, সাধারণভাবে, আপনি যত বেশি পরীক্ষা করেন (একটি নির্দিষ্ট সীমা পর্যন্ত) এবং পরিমাপ করেন, আপনি যত বেশি ডেটা সংগ্রহ করেন এবং আপনি নিরাপদ হন। খারাপ উপমা সময়: এটি ড্রাইভিংয়ের মতো ভাবেন (বা সাধারণভাবে জীবন): আপনি বিশ্বের সেরা চালক হতে পারেন, যদি গাড়িটি আপনার উপর ভেঙে যায় বা কেউ যদি আজ নিজের গাড়ীতে করে গাড়ি চালিয়ে নিজেকে হত্যা করার সিদ্ধান্ত নেয়, আপনার দক্ষতা যথেষ্ট নাও হতে পারে। দুটি পরিবেশগত জিনিসই আপনাকে আঘাত করতে পারে এবং মানুষের ত্রুটিগুলিও গুরুত্বপূর্ণ।
কোড পর্যালোচনাগুলি হ'ল ডেভলপমেন্ট টিমের হলওয়ে পরীক্ষা
এবং আমি মনে করি যে এখানে শেষ অংশটি কী: কোড পর্যালোচনা করুন। আপনি যদি একা হয়ে থাকেন তবে আপনার উন্নতির মূল্য জানেন না। কোড পর্যালোচনাগুলি আমাদের "হলওয়ে টেস্টিং": বাগগুলি সনাক্ত করার জন্য এবং অতিরিক্ত ইঞ্জিনিয়ারিং এবং অন্যান্য অ্যান্টি-নিদর্শনগুলি সনাক্ত করার জন্য এবং কোডটি আপনার দলের দক্ষতার সাথে সামঞ্জস্যপূর্ণ কিনা তা নিশ্চিত করার জন্য লিনাসের আইনের রাইমন্ডের সংস্করণ অনুসরণ করুন। "সেরা" কোড থাকার কোনও মানে নেই যদি আপনি অন্য কেউ না হন তবে আপনি এটি বুঝতে এবং বজায় রাখতে পারেন এবং এটি ক্রিপ্টিক অপ্টিমাইজেশান এবং 6-স্তরের গভীর স্থাপত্য নকশার ক্ষেত্রেও যায়।
বন্ধ শব্দ হিসাবে, মনে রাখবেন:
সকলেই জানেন যে ডিবাগিং প্রথম স্থানে কোনও প্রোগ্রাম লেখার চেয়ে দ্বিগুণ শক্ত। আপনি লেখার সময় যদি আপনি যতটা চালাক হন তবে আপনি কীভাবে এটির ডিবাগ করবেন? - ব্রায়ান কর্নিগান