
আমাদের অধিকাংশই সম্ভবত সেই ডেভেলপারের কথা ভাবি না যে আমাদের কোড রক্ষণাবেক্ষণ করবে। সম্প্রতি পর্যন্ত, আমিও তার কথা বিবেচনা করিনি। আমি কখনো ইচ্ছাকৃতভাবে দুর্বোধ্য কোড লিখিনি, কিন্তু আমি কোনো সূত্রও রেখে যাইনি।
ভালো প্রোগ্রামারদের সম্পর্কে কেন্ট বেক:
যেকোনো বোকা এমন কোড লিখতে পারে যা কম্পিউটার বুঝতে পারে। ভালো প্রোগ্রামাররা এমন কোড লেখেন যা মানুষ বুঝতে পারে।
ভালো কম্পিউটার প্রোগ্রাম সম্পর্কে ডগলাস ক্রকফোর্ড:
এটি সবই যোগাযোগ এবং সেই যোগাযোগকে সহজতর করার জন্য আপনি যে কাঠামো ব্যবহার করেন তার উপর নির্ভর করে। মানুষের ভাষা এবং কম্পিউটার ভাষা অনেক ক্ষেত্রে খুবই ভিন্নভাবে কাজ করে, কিন্তু শেষ পর্যন্ত আমি একটি ভালো কম্পিউটার প্রোগ্রামকে বিচার করি সেই প্রোগ্রাম পড়া মানুষের সাথে যোগাযোগ করার ক্ষমতার ভিত্তিতে। সুতরাং সেই স্তরে, তারা খুব একটা আলাদা নয়।
সবচেয়ে ভালোভাবে লেখা কোডেও উদ্দেশ্য এবং অভিপ্রায় আবিষ্কার করা কঠিন। লেখকের রেখে যাওয়া যেকোনো সূত্র, মন্তব্য, বিস্তৃত নামকরণ এবং সামঞ্জস্য, পরবর্তী ডেভেলপারদের জন্য অত্যন্ত সহায়ক।
আমি প্যাটার্ন খোঁজার মাধ্যমে শুরু করি। প্যাটার্ন অনেক জায়গায় পাওয়া যেতে পারে যার মধ্যে রয়েছে ভেরিয়েবল নাম, ক্লাস লেআউট এবং প্রকল্পের কাঠামো। একবার চিহ্নিত হলে, প্যাটার্নগুলি পূর্ববর্তী ডেভেলপারের অভিপ্রায়ের অন্তর্দৃষ্টি এবং কোড বোঝার ক্ষেত্রে সাহায্য করে।
প্যাটার্ন কী? প্যাটার্ন হলো একটি পুনরাবৃত্ত সমস্যার একটি পুনরাবৃত্তিযোগ্য সমাধান। একটি দরজার কথা বিবেচনা করুন। যখন একটি স্থানে মানুষের প্রবেশ এবং বের হওয়ার সুবিধা থাকতে হবে এবং তবুও বিচ্ছিন্নতা বজায় রাখতে হবে, তখন দরজার প্যাটার্ন প্রয়োগ করা হয়। এখন এটি স্পষ্ট মনে হয়, কিন্তু একসময় তা ছিল না। কেউ দরজার প্যাটার্ন তৈরি করেছিল যার মধ্যে ছিল দরজার হাতল, কবজা এবং এই উপাদানগুলির স্থাপনা। যেকোনো বাড়িতে প্রবেশ করুন এবং আপনি যেকোনো দরজা এবং তার উপাদানগুলি চিহ্নিত করতে পারবেন। শৈলী এবং রং ভিন্ন হতে পারে, কিন্তু উপাদানগুলি একই। সফটওয়্যারও একই রকম।
সাধারণ সফটওয়্যার সমস্যার জন্য পরিচিত সফটওয়্যার প্যাটার্ন রয়েছে। ১৯৯৫ সালে, ডিজাইন প্যাটার্নস: এলিমেন্টস অফ রিইউজেবল অবজেক্ট-ওরিয়েন্টেড সফটওয়্যার প্রকাশিত হয়েছিল যা সাধারণ সফটওয়্যার প্যাটার্ন বর্ণনা করে। এই বইটি বেশিরভাগ সফটওয়্যার অ্যাপ্লিকেশনে সম্মুখীন হওয়া সাধারণ সমস্যাগুলি বর্ণনা করে এবং এই সমস্যাগুলির একটি মার্জিত সমাধান প্রদান করে। ডেভেলপাররা তাদের নিয়মিত সম্মুখীন হওয়া সমস্যা সমাধানের সময় তাদের নিজস্ব প্যাটার্নও তৈরি করেন। যদিও তারা একটি বই প্রকাশ করেন না, যদি আপনি যথেষ্ট কাছ থেকে দেখেন তবে আপনি সেগুলি চিহ্নিত করতে পারবেন।
কখনো কখনো প্যাটার্নগুলি চিহ্নিত করা কঠিন। এটি কোড বোঝা কঠিন করে তোলে। যখন আপনি নিজেকে এই পরিস্থিতিতে পান, কোডটি পরিদর্শন করুন, দেখুন এটি কীভাবে ব্যবহৃত হয়। একটি পুনর্লিখন শুরু করুন। নিজেকে জিজ্ঞাসা করুন, আপনি কীভাবে একই ফলাফল অর্জন করবেন। প্রায়শই যখন আপনি একটি অ্যালগরিদমের চিন্তা প্রক্রিয়ার মধ্য দিয়ে যান, আপনি অন্য ডেভেলপারের বাস্তবায়নের অন্তর্দৃষ্টি পান। আমাদের অনেকেরই যা বুঝি না তা পুনর্লিখনের প্রবণতা রয়েছে। এই তাগিদ প্রতিরোধ করুন! বিদ্যমান বাস্তবায়ন যুদ্ধ-পরীক্ষিত এবং আপনারটি নয়।
কিছু কোড শুধুই বিরক্তিকর, একজন সহকর্মীর কাছে পৌঁছান — দ্বিতীয় একজোড়া চোখ সবসময় সাহায্য করে। একসাথে কোডের মধ্য দিয়ে হাঁটুন। আপনারা দুজন কী খুঁজে পাবেন তা দেখে আপনি অবাক হবেন।
পরবর্তী ডেভেলপারদের জন্য সূত্র রেখে যাওয়ার ৫টি টিপস
১. প্যাটার্ন
পরিচিত প্যাটার্ন ব্যবহার করুন, আপনার নিজস্ব প্যাটার্ন তৈরি করুন। কোড জুড়ে একটি সামঞ্জস্যপূর্ণ প্যারাডাইম মেনে চলুন। উদাহরণস্বরূপ, ডেটা অ্যাক্সেসের জন্য ৩টি পদ্ধতি রাখবেন না।
২. সামঞ্জস্য
এটি কোডিংয়ের সবচেয়ে গুরুত্বপূর্ণ দিক। অসামঞ্জস্যপূর্ণ কোড খোঁজার চেয়ে হতাশাজনক আর কিছু নেই। সামঞ্জস্য অনুমানের সুযোগ দেয়। প্রতিবার যখন একটি নির্দিষ্ট সফটওয়্যার প্যাটার্নের সম্মুখীন হওয়া হয়, তখন এটি অনুমান করা উচিত যে এটি প্যাটার্নের অন্যান্য দৃষ্টান্তের মতো একইভাবে আচরণ করে।
অসামঞ্জস্যপূর্ণ কোড একটি দুঃস্বপ্ন, কল্পনা করুন প্রতিটি শব্দের ভিন্ন অর্থ সহ একটি বই পড়া, একই শব্দ ভিন্ন জায়গায় ভিন্ন অর্থ সহ। আপনাকে প্রতিটি শব্দ খুঁজে বের করতে হবে এবং অভিপ্রায় আবিষ্কার করতে প্রচুর মানসিক শক্তি ব্যয় করতে হবে। এটি হতাশাজনক, ক্লান্তিকর এবং বেদনাদায়ক। আপনি পাগল হয়ে যাবেন! পরবর্তী ডেভেলপারের সাথে এটি করবেন না।
৩. বিস্তৃত নামকরণ
এটি আপনার ভাষা। এগুলি আপনার গল্পের শব্দ। সেগুলি ভালোভাবে বুনুন।
এর মধ্যে রয়েছে ক্লাসের নাম, মেথডের নাম, ভেরিয়েবলের নাম, প্রকল্পের নাম এবং প্রপার্টির নাম।
করবেন না:
if(monkey.HoursSinceLastMeal > 3)
{
FeedMonkey();
}
করুন:
int feedInterval = 3;
if(monkey.HoursSinceLastMeal > feedInterval)
{
FeedMonkey();
}
প্রথম উদাহরণে if স্টেটমেন্টে ৩ হার্ড কোড করা আছে। এই কোডটি সিনট্যাক্টিক্যালি সঠিক, কিন্তু ৩ নম্বরের অভিপ্রায় আপনাকে কিছুই বলে না। এটি যে প্রপার্টির বিপরীতে মূল্যায়ন করা হয় তা দেখে, আপনি অনুমান করতে পারেন যে এটি সত্যিই ৩ ঘন্টা। বাস্তবে আমরা জানি না। আমরা একটি অনুমান করছি।
দ্বিতীয় উদাহরণে, আমরা ৩কে ‘feedInterval’ নামক একটি ভেরিয়েবলে সেট করেছি। অভিপ্রায় ভেরিয়েবলের নামে স্পষ্টভাবে বলা হয়েছে। যদি শেষ খাবারের ৩ ঘন্টা হয়ে গেছে, তাহলে বানরকে খাওয়ানোর সময়। ভেরিয়েবল সেট করার একটি পার্শ্ব প্রতিক্রিয়া হলো আমরা এখন লজিক পরিবর্তন না করে ফিড ইন্টারভাল পরিবর্তন করতে পারি।
এটি একটি কৃত্রিম উদাহরণ, একটি বড় সফটওয়্যারে এই ধরনের কোড স্ব-নথিভুক্ত এবং পরবর্তী ডেভেলপারকে কোড বুঝতে সাহায্য করবে।
৪. মন্তব্য
মন্তব্য একটি দ্বিধারী তলোয়ার। অত্যধিক মন্তব্য রক্ষণাবেক্ষণের খরচ বাড়ায়, যথেষ্ট না থাকলে ডেভেলপাররা কোড কীভাবে কাজ করে তা নিয়ে অনিশ্চিত থাকেন। একটি সাধারণ নিয়ম হলো যখন গড় ডেভেলপার কোড বুঝবেন না তখন মন্তব্য করা। এটি ঘটে যখন অনুমানগুলি স্পষ্ট নয় বা কোডটি সাধারণের বাইরে।
৫. সহজ কোড
আমার পেশাদার মতে জটিল কোড লেখা ডেভেলপারদের মধ্যে সবচেয়ে বড় ভুল।
সরলতা সম্পর্কে স্টিভ জবস:
সরল জটিলের চেয়ে কঠিন হতে পারে: এটি সরল করার জন্য আপনার চিন্তাভাবনা পরিষ্কার করতে কঠোর পরিশ্রম করতে হবে। কিন্তু শেষ পর্যন্ত এটি মূল্যবান কারণ একবার আপনি সেখানে পৌঁছালে, আপনি পাহাড় সরাতে পারবেন।
জটিলতা অনেক রূপে আসে, যার মধ্যে কিছু অন্তর্ভুক্ত: ভবিষ্যত প্রমাণ, অত্যধিক জটিল বাস্তবায়ন, অত্যধিক বিমূর্তকরণ, বড় ক্লাস এবং বড় মেথড।
পরিষ্কার সহজ কোড লেখার বিষয়ে আরও জানতে, দেখুন আঙ্কেল ববের বই ক্লিন কোড এবং ম্যাক্স কানাত-আলেকজান্ডারের কোড সিমপ্লিসিটি
সমাপনী
কোড পড়া কঠিন। কয়েকটি সহজ ধাপের মাধ্যমে আপনি নিশ্চিত করতে পারেন যে পরবর্তী ডেভেলপার আপনার কোড বুঝতে পারবেন।
লেখক: চাক কনওয়ে সফটওয়্যার ইঞ্জিনিয়ারিং এবং জেনারেটিভ এআই-তে বিশেষজ্ঞ। তার সাথে সোশ্যাল মিডিয়ায় যোগাযোগ করুন: X (@chuckconway) অথবা তাকে YouTube-এ দেখুন।