উত্তরাধিকার কোডটি কীভাবে পরিচালনা করবেন সে সম্পর্কে পরামর্শ

আইকনিক অ্যাপল ম্যাকিনটোশ 128 কে

যখন "লিগ্যাসি কোড" শব্দটি প্রকাশিত হয়, তখন এটি সাধারণত অসম্মানের সাথে বলা বা গৃহীত হয়। "লিগ্যাসি কোড মেমস" এর জন্য প্রাথমিক গুগল অনুসন্ধানে শত শত এবং শত শত চিত্র ম্যাক্রোগুলি তাদের চুল ছিঁড়ে, খাঁজকাটে দেখাচ্ছেন বা প্রচণ্ড হতাশ করেছেন।

আমি যখন 5 মাস আগে একটি প্রোডাক্ট ভিত্তিক সংস্থায় একটি সফ্টওয়্যার বিকাশকারী হিসাবে কাজ শুরু করি তখন আমার কোন ধারণা ছিল না যে উত্তরাধিকারের কোডটি কী বা এর সাথে কী কাজ করা হয়েছে।

আমার চতুর্থ মাসে, আমাকে দু'বছর আগে তিন বছর আগে আমার এক সহকর্মীর দ্বারা নির্মিত একটি অ্যাপ্লিকেশনটিতে একটি সুইচ ফিল্টার মডেল যুক্ত করতে বলা হয়েছিল। এটি যথেষ্ট সহজ বলে মনে হয়েছিল; আমি গত তিন বছরের বেশিরভাগ অংশ স্ট্যান্ডার্ড স্ট্যাকের সাথে জড়িত একটি অবিশ্বাস্যরকম জটিল অ্যাপ্লিকেশনটিতে কাজ করে কাটিয়েছি: টাইপস্ক্রিপ্ট / প্রতিক্রিয়া / কৌণিক / ডটনেট। আমি ইতিমধ্যে অনেক অনন্য সমস্যা সমাধান করেছি এবং ব্যাকএন্ডে ক্যোয়ারী প্যারামিটারগুলি পাস করার জন্য একটি সহজ মডেল তৈরি করার জন্য আমার কোডিং সক্ষমতায় যথেষ্ট আত্মবিশ্বাস অনুভব করেছি।

আপনি অনুমান করতে পারেন, এটি প্রায় এত সহজ ছিল না। কিন্তু কেন?

উত্তরাধিকারের কোডটি কী এবং কেন এটি মোকাবেলা করা চ্যালেঞ্জ হতে পারে

লিগ্যাসি কোডটি অন্য বিকাশকারী বা দলের কাছ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত কোড যা পুরানো প্রযুক্তিগুলি ব্যবহার করে যা আর সমর্থিত নয় বা নতুন সংস্করণে ছাড়িয়ে গেছে। অনেক প্রোগ্রামার বলে যে "কোড লিগ্যাসির সাথে সাথে লিগ্যাসি কোড হয়ে যায়"। "নিয়মিত" কোড এবং লিগ্যাসি কোডের মধ্যে কার্যকরী পার্থক্যটি কেবল এটিই হতে পারে যে আপনি যা ব্যবহার করছেন তা তুলনা করে এটির বিভিন্ন কনভেনশন রয়েছে।

আমার ক্ষেত্রে, অ্যাপ্লিকেশনটি সি সি কোডের পরিবর্তে এক্সএএমএল এবং টি 4 টেক্সট টেম্পলেট ব্যবহার করেছে এবং আমি অভ্যস্ত হওয়ার মতো এটি জোরালোভাবে টাইপ করা হয়নি। এটি ডেটা কাঠামো বুঝতে আমার পক্ষে কিছুটা কঠিন করে তুলেছে। কোনও প্রকারের অর্থ এই নয় যে আমি রানটাইমগুলিতে বেশি ঘন ঘন টাইপআররেস চালিয়ে যাচ্ছি, আপনি যখন কোনও বিশাল বৈশিষ্ট্যটি লেখেন তখন ডিবাগ করা কঠিন difficult এর উপরে, অ্যাপটি ডটনেটের অনেক পুরানো সংস্করণ ব্যবহার করেছে, যা উপাদান লাইব্রেরির একটি সামঞ্জস্যপূর্ণ সংস্করণের সাথে পুনর্মিলন করা প্রয়োজন।

শিষ্টাচার এবং বুদ্ধিমানতার বোধের সাথে কীভাবে উত্তরাধিকারের কোডটি পরিচালনা করতে হবে তার উত্সাহিত হওয়ার আগে, আমি একটি দাবি অস্বীকার করতে চাই যে লিগ্যাসি কোডটি সব খারাপ নয় এবং কোনও লিগ্যাসি প্রকল্পে কাজ করা ভয়ানক হতে হবে না। বিপরীতে, লিগ্যাসি কোডে কাজ করা আমাকে নমনীয়, ধৈর্যশীল এবং সর্বোপরি, অভিজ্ঞতাটি আমাকে উপন্যাসের প্রসঙ্গে একটি নতুন দৃষ্টিকোণ দিয়ে সমস্যাগুলি সমাধান করার সুযোগ দেয়।

প্রকৃতপক্ষে, পূর্বোক্ত কোডবেজের মাধ্যমে কাজ শুরু করার আগে এটি আমার চেয়ে উন্নত বিকাশকারী হয়ে উঠেছে এবং আশা করি, আপনার উত্তরাধিকার প্রকল্পটি আপনাকেও কিছু শেখাতে পারে।

প্রযুক্তিগত স্তরে উত্তরাধিকার কোডটি কীভাবে মোকাবেলা করা যায়

সম্ভব হলে ডকুমেন্টেশন এবং কোড মন্তব্য পড়ুন

একটি নিখুঁত বিশ্বে, প্রতিটি কোডবেসে একটি দৃ RE় README থাকে যা প্রকল্পটি কীভাবে কাজ করে তার সংক্ষিপ্ত বিবরণ, কোড লেখাগুলি যা মূল লেখকের সঠিক যুক্তি ব্যাখ্যা করে এবং পুরো অ্যাপ্লিকেশনটি সঠিক ধারণা দেয়। তবে এটি খুব কমই ঘটে। প্রকল্পগুলি বিকাশের সাথে সাথে অনেকগুলি README আপডেট হয় না, লোকেরা মন্তব্য লিখতে ভুলে যায়, তাদের যুক্তিটি কোনও নতুন বিকাশকারীকে সুস্পষ্ট বলে মনে করে, বা এই বিষয়গুলির যত্ন নেওয়ার জন্য তারা কেবল সময়ের বাইরে চলে যায়।

সামগ্রিকভাবে কোডবেসটি দেখুন

আপনি যদি হারিয়ে যান এবং কোথা থেকে শুরু করবেন তা জানেন না, তবে নিজেকে এই প্রশ্নগুলি জিজ্ঞাসা করুন:

  • আবেদনের উদ্দেশ্য কী?
  • অ্যাপের মাধ্যমে ডেটা কীভাবে প্রবাহিত হবে?
  • আপনার বৈশিষ্ট্যটি অ্যাপটিতে কীভাবে ফিট করে?

আপনি যখন বড় ছবিটি অনুধাবন করতে পারেন তখন সমস্যাটি কীভাবে সমাধান করা যায় তা নির্ধারণ করা সহজ। হতে পারে আপনার একটি নতুন ফাইল তৈরি করতে হবে এবং একটি নতুন নিয়ামক তৈরি করতে হবে। হতে পারে আপনার কোনও ইউটিলিটি ফাংশন লিখতে হবে এবং এটি পরীক্ষা করতে হবে। কেস যাই হউক না কেন, আপনার সমস্যার বিস্তৃত প্রসঙ্গটি বোঝা সমাধান তৈরির জন্য প্রথম ধাপ।

অ্যাপটি ম্যানুয়ালি এবং ইউনিট পরীক্ষার সাথে যখনই সম্ভব পরীক্ষা করুন

কোনও নতুন বৈশিষ্ট্য যুক্ত করার সময় অস্থায়ীভাবে একটি অ্যাপ্লিকেশন ভাঙা অনিবার্যতা, আপনি যে স্তরের বিকাশকারীই হন না কেন। এটি স্বাভাবিক এবং প্রত্যাশিত, বিশেষত যদি আপনি এই কাজের ক্ষেত্রে নতুন হন, অপরিচিত স্ট্যাকের সাথে কোনও লিগ্যাসি কোডবেসে কাজ করছেন বা দুটির সংমিশ্রণ রয়েছে।

দীর্ঘমেয়াদী সমস্যাগুলি থেকে এই বিরতিগুলি রোধ করার সর্বোত্তম উপায় হ'ল ইউনিট পরীক্ষা এবং ম্যানুয়াল পরীক্ষার উভয় দিয়ে আপনার অ্যাপ্লিকেশনটিকে ভালভাবে পরীক্ষা করা। এই পরীক্ষাগুলি স্থানে রাখা এবং এগুলি থেকে ঠিক কী ধরণের কভারেজ পাবেন তা জেনে রাখা আপনার এবং ভবিষ্যতের বিকাশকারীদের অনেক সময় সাশ্রয় করবে। এছাড়াও, কঠোর পরীক্ষাগুলি অ্যাপ্লিকেশনটিকে আরও স্কেলযোগ্য করে তোলে এবং প্রতিবার আপনার পরীক্ষাগুলি পরিষ্কারভাবে চালানোর সময় আপনাকে একটু ডোপামাইন ভিড় দেয়। দুর্ভাগ্যক্রমে, আমার দৃশ্যে সীমাবদ্ধ ইউনিট পরীক্ষার কেস রয়েছে

ম্যানুয়াল পরীক্ষার জন্য, আপনি একটি পরীক্ষা ম্যাট্রিক্স বিকাশ করতে এবং ডকুমেন্টটি ভবিষ্যতের বিকাশকারীদের কাছে অ্যাক্সেসযোগ্য কিনা তা নিশ্চিত করতে চাইবেন। ম্যাট্রিক্সের জন্য, আপনি ক্রিয়াকলাপগুলির একটি সেট, প্রত্যাশিত আচরণ, আপনি যখন এটি পরীক্ষা করেন তখন আসল আচরণ এবং এর মতো অন্য কোনও গুরুত্বপূর্ণ বিবরণ সংজ্ঞায়িত করতে চান:

সাহায্যের জন্য জিজ্ঞাসা

ধরে নিই যে আপনার প্রকল্পটি আপনার কর্মস্থলে একজন বর্তমান বা প্রাক্তন কর্মচারী লিখেছেন, অন্য কেউ সম্ভবত অ্যাপটিতে কী চলছে তা জানেন বা কমপক্ষে আপনাকে আনস্টাক করতে যথেষ্ট জানেন। আপনার অহংকার গিলে ফেলতে এবং অন্য কাউকে জিজ্ঞাসা করা শেখা কারও কারও কাছে অস্বস্তিকর পদক্ষেপ তবে বিকাশকারী হিসাবে বেড়ে ওঠার জন্য প্রয়োজনীয় একটি এবং সম্ভবত আপনার সহকর্মী আপনাকে কয়েকটি নতুন কৌশল শিখিয়ে দিতে পারে।

আপনার সময় (এবং তাদের) এর দক্ষ ব্যবহারের জন্য একটি ভাল উপায় অবহিত প্রশ্নগুলি তৈরি করা। পুরোপুরি কোডবেসটি দেখার জন্য ফিরে যাওয়ার চেষ্টা করুন এবং আপনার বোঝার ফাঁকগুলি খুঁজে বের করুন। এটি কেবল আপনার সমস্যাটি কী তা সম্পর্কে আরও ভাল ধারণা পেতে তাদের সহায়তা করবে তা নয়, এটি দেখায় যে আপনি নিজেরাই প্রথমে সমস্যা সমাধানের চেষ্টা করার উদ্যোগ নিয়েছিলেন।

আপনার ক্ষতি কখন কাটাবেন তা জেনে নিন

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

এটি বলেছিল যে, সেভাবে চলতে অসুবিধা রয়েছে:

  • পুনর্লিখনের কোডগুলি বাগগুলি প্রবর্তন করতে পারে, যদিও এটি ভাল ইউনিট পরীক্ষার মাধ্যমে কিছুটা ছড়িয়ে দেওয়া যেতে পারে।
  • পুনর্লিখনের কোডটি লুকানো কার্যকারিতা সরিয়ে ফেলতে পারে, যদিও এটি ভাল ইউনিট পরীক্ষার মাধ্যমে সংশোধনও করা যায়।
  • যদি আপনাকে সময়ের জন্য চাপ দেওয়া হয় তবে আপনার বৈশিষ্ট্যটির বাইরেও আপনার বৈশিষ্ট্যের বাইরে কোড লেখার জন্য এটি কেবল চারপাশের তৈরির চেয়ে বেশি সময়সাপেক্ষ হতে পারে।

সব মিলিয়ে আপনার সেরা রায়টি ব্যবহার করুন। উভয় পছন্দের পক্ষে পক্ষে মতামত রয়েছে এবং এটি সব আপনার পরিস্থিতি এবং প্রকল্পের বাজেটের উপর নির্ভর করে।

মানসিক স্তরে লিগ্যাসি কোডটি কীভাবে মোকাবেলা করা যায়

এখন যেহেতু আমরা উত্তরাধিকারের কোডটি মোকাবেলার প্রযুক্তিগত দিকগুলি কভার করেছি, আসুন আমাদের নরম দক্ষতা ব্যবহার করে কীভাবে এটি মোকাবেলা করা যায় সে সম্পর্কে কথা বলি। সর্বোপরি, বিকাশকারীরা হ'ল মানুষ, কেবল কোডিং রোবটই নয়, এবং এমন প্রকল্পগুলিতে চ্যালেঞ্জিং সমস্যাগুলি মোকাবেলা করা যাতে সৃজনশীলতা এবং লেখকত্বের প্রয়োজন হয় তা কেবল আপনার জন্য নয় আপনার সহকর্মীদের জন্যও আবেগিকভাবে ট্যাক্স হতে পারে।

বিনীত ও সদয় হন

এটি এমন একটি বিষয় যা আমি আরও অনুশীলন করা দরকার তা মেনে নেব। যখন আমাকে প্রথম ফিল্টার মডেল প্রকল্পটি অর্পণ করা হয়েছিল, তখন কোডটির মূল লেখক আমার থেকে 15 ফুট দূরে বসে কীভাবে জাঙ্কি এবং কোডটি প্রয়োগ না করে তা মোকাবেলা করার বিষয়ে আমি বেশ সোচ্চার ছিলাম। আমি আমার মন্তব্যগুলিকে একটি রসিকতা হিসাবে চিহ্নিত করতে চেয়েছিলাম, কিন্তু প্রথমদিকে, আমি স্বীকার করেছি যে আমি অহংকারী এবং ক্ষতিকারক হয়ে উঠছিলাম এবং আমার আরও সহানুভূতিশীল হওয়া উচিত ছিল।

অনেকগুলি কারণ রয়েছে যা লিগ্যাসি কোডটি "বন্ধ" সন্ধান করতে পরিচালিত করতে পারে যা আপনি লেখকের সমালোচনা করা শুরু করার আগে বা তাদের সম্পর্কে সবচেয়ে খারাপ ধারণা গ্রহণ করার আগে বিবেচনা করা উচিত (এটি আলগাভাবে মৌলিক বৈশিষ্ট্য ত্রুটির সাথে জড়িত!)।

মূল লেখকের কোড লেখার জন্য তারা যেভাবে করেছিল তার কারণ থাকতে পারে।

সময়ের সীমাবদ্ধতা এবং প্রযুক্তির সীমাবদ্ধতাগুলির কারণে একজন ব্যক্তি কোড লিখতে পারে যা কাজ করে তবে অগত্যা সেরা কনভেনশন থাকে না। যদি আপনি এমন পরিস্থিতিতে নিজেকে যথেষ্ট সময়, পুরানো সরঞ্জাম এবং একটি টুডো তালিকার এক মাইল লম্বা চিত্র দিয়ে থাকেন তবে আপনি সম্ভবত সেরা কোডটি লিখবেন না!

সম্মেলন পরিবর্তন।

পুরানো প্রকল্পগুলিতে কোডের জন্য কনভেনশনটি স্ট্রিং ঘোষণার জন্য একক উদ্ধৃতি ব্যবহার করছে এবং দুটি স্পেস এক ট্যাবের সমান ছিল। আমাদের একক ফাইলের ভিতরে একাধিক ছোট ক্লাস ছিল ested আমাদের বর্তমান কনভেনশনে আমরা ডাবল কোট এবং চারটি স্পেস ব্যবহার করি এবং প্রতিটি ক্লাস, যতই ছোট হোক না কেন, মডেল ডিরেক্টরিতে নিজস্ব .csfile এ বাস করে। এবং বেশ কয়েক বছরে, আমি নিশ্চিত যে এটিও পরিবর্তিত হবে।

সমস্ত কোড শেষ পর্যন্ত উত্তরাধিকার হয়ে যায়

এটি পূর্ববর্তী পয়েন্টটির সাথে সম্পর্কিত: আপনার কোডটি শেষ পর্যন্ত উত্তরাধিকার হিসাবে থাকবে। আপনি যখন জ্যেষ্ঠতার মই উপরে উঠবেন তখন নতুন বিকাশকারীদের নেওয়া হবে এবং আপনার পুরানো কোড বজায় রাখতে হবে। আপনি পরিষ্কার, ত্রুটিবিহীন, ডিআরওয়াই কোড লিখতে পারেন, তবে একবার সম্মেলনগুলি পরিবর্তন বা প্রবণতা পরিবর্তন হয়ে গেলে, এই নতুন বিকাশকারীরা অন্যদের উত্তরাধিকারের কোডটি যেভাবে দেখছেন তেমনভাবে আপনার কোডটি দেখতে পাবেন।

ছোট সাফল্যে গর্বিত হন

আপনার অভ্যাসগত সম্মেলনের বাইরে কাজ করা সহজ নয়; লিগ্যাসি কোড নিয়ে কাজ করার বিষয়ে মেমস এবং রসিকতাগুলির বিশাল ট্রভের একটি কারণ রয়েছে। যদি আপনি কখনও নিজের মাতৃভাষার বাইরে কোনও ভাষা শিখে থাকেন তবে আপনি জানেন যে এটি আপনার দ্বিতীয় ভাষার কোনও শব্দ বা শব্দটি ভুলে যেতে কেমন অনুভব করে তবে তা আপনার মাতৃভাষায় মনে রাখবেন এবং শূন্যস্থানটি অনুবাদ করতে সক্ষম হবেন না। আধুনিক এবং উত্তরাধিকারী সম্মেলনের মধ্যে একই পরিবর্তন ঘটে changing কখনও কখনও আপনার বিয়ারিংগুলি ফিরে পেতে কেবল এক মিনিট সময় নেয়।

উত্তরাধিকারের কোডটি সফলভাবে নেভিগেট করতে সক্ষম হয়ে আপনি অভিযোজনযোগ্য হওয়ার দক্ষতাটি প্রদর্শন করছেন, যা একটি গুরুত্বপূর্ণ দক্ষতা যা আপনার বর্তমান চাকরিতে এবং আপনার ভবিষ্যতের সমস্ত চাকরিতে আপনাকে উপকৃত করে, সেই চাকরিগুলি প্রযুক্তি ক্ষেত্রেই হোক না কেন। এই দক্ষতাটি অনুশীলনের জন্য লিগ্যাসি কোড হ'ল সঠিক খেলার মাঠ।

উপসংহারে

আপনার নিজের কোড রচনাকে শক্তিশালী করতে এই সময়টি ব্যবহার করুন

এখন যেহেতু আপনি কোনও লিগ্যাসি কোডবেজে কাজ করার অভিজ্ঞতা পেয়েছেন, আপনি কী পছন্দ করেন এবং সরঞ্জাম এবং কনভেনশনগুলির ক্ষেত্রে কী পছন্দ করেন না তার একটি ভাল বুদ্ধি নিয়ে আপনাকে এ থেকে দূরে আসা উচিত। এগুলি হ'ল ভবিষ্যতের প্রকল্পগুলিতে আপনি চালিয়ে যেতে পারেন এবং অন্যের কোড পর্যালোচনা করতে, গঠনমূলক সমালোচনা এবং মেন্টরশিপ দেওয়ার ক্ষেত্রে আপনাকে আরও উন্নত করতে পারেন।

ব্যবহারকারী এবং ভবিষ্যতের বিকাশকারীদের জন্য অ্যাপ্লিকেশন বিকাশ করুন

আপনার কাছে দুর্দান্ত ডকুমেন্টেশন এবং কোড মন্তব্য বা কোনও ডকুমেন্টেশন বা কোড মন্তব্যগুলির অভিজ্ঞতা ছিল কিনা, আপনি দেখতে পারেন যে কীভাবে ডকুমেন্টেশন এবং মন্তব্যগুলি ভবিষ্যতের বিকাশকারীদের প্রকল্পটি নেভিগেট করতে সহায়তা করার জন্য শক্তিশালী সরঞ্জাম। আপনি একটি মসৃণ, কার্যকরী এবং ডিআরওয়াই অ্যাপ্লিকেশন চাওয়ার একটি সাধারণ লক্ষ্য ভাগ করেন; ডকুমেন্টেশন বজায় রাখা এবং তথ্যবহুল কোড মন্তব্য রেখে যাওয়া এই ফাঁকটি সরিয়ে দেওয়ার একটি ভাল উপায়।

মনে রাখবেন যে কোনও দিন আপনার কোডটিও উত্তরাধিকার হিসাবে থাকবে

আমি ইতিমধ্যে কয়েকবার এটি উল্লেখ করেছি, তবে আপনার কোডটি এবং যুক্তিটি কতটা DRY করে এবং মূলত নির্ধারণ করা হোক না কেন, আপনার কোডটিও উত্তরাধিকারসূত্রে হবে তা বার বার বলা গুরুত্বপূর্ণ।

সর্বাধিক গুরুত্বপূর্ণ অবলম্বন হ'ল নমনীয়, নম্র হওয়া এবং আপনি অবশ্যই পুরানো কোড থেকে নতুন কৌশল শিখতে পারেন।

আরো দেখুন

কিভাবে অ্যালকোহল সংবহনআমি প্রোগ্রামিং শিখতে শুরু করার আগে আমার প্রথমে কী শিখতে হবে? আমি আমার ডোমেনে কীভাবে আমার ওয়েবসাইট হোস্ট করব? জাভাতে কোনও অভিজ্ঞতা না দিয়ে আমি কীভাবে অ্যান্ড্রয়েড বিকাশকারী হিসাবে শুরু করব? আমি কীভাবে আমার ওয়েবসাইটে 30 সেকেন্ড থেকে 3 মিনিটে সেশন সময়কাল উন্নত করতে পারি? কিভাবে মানসিকভাবে সামুদ্রিক বুট শিবির জন্য প্রস্তুতযদি কোনও আপওয়ার্ক বিকাশকারী যদি 5-তারকা আপওয়ার্ক ডিজাইনার হিসাবে কোনও সাইট নকশা বাস্তবায়নের জন্য 10 বার দীর্ঘ সময় (প্রায় 100 ঘন্টা) ব্যয় করে থাকে তবে আমি কীভাবে বলতে পারি যে বিকাশকারীকে অনেক ঘন্টা দরকার ছিল বা তিনি চুক্তিতে দুধ খাচ্ছিলেন কিনা? কিভাবে মটোরোলা অস্পষ্টতা পুনরায় সেট করবেন