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