কিছু প্রোগ্রামিং ভাষায়, অর্ডার বিষয়টি বিবেচনা করে কারণ তারা ঘোষণার পরে আপনি জিনিসগুলি ব্যবহার করতে পারবেন না। তবে এটি ব্যতীত, বেশিরভাগ ভাষার ক্ষেত্রে এটি সংকলকটির কোনও বিষয় নয়। সুতরাং, আপনি এটি মানুষের কাছে বিবেচনা করে রেখে এসেছেন।
আমার প্রিয় মার্টিন ফাউলারের উক্তিটি: Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
তাই আমি বলব যে আপনার শ্রেণীর ক্রমটি নির্ভর করা উচিত যা মানুষের পক্ষে বুঝতে সহজ করে তোলে তার উপর।
বব মার্টিন তাঁর Clean Code
বইতে যে স্টেপ-ডাউন চিকিত্সা করেছেন তা আমি ব্যক্তিগতভাবে পছন্দ করি । শ্রেণীর শীর্ষে সদস্য ভেরিয়েবল, তারপরে নির্মাতারা, তারপরে অন্যান্য সমস্ত পদ্ধতি। এবং আপনি ক্লাসের মধ্যে কীভাবে সেগুলি ব্যবহার করা হয় তার সাথে একত্রে থাকার পদ্ধতিগুলি অর্ডার করুন (স্বেচ্ছাসেবকভাবে সমস্ত সরকারী তারপর ব্যক্তিগতকৃত সুরক্ষিত রাখার চেয়ে)। তিনি এটিকে "উল্লম্ব দূরত্ব" বা এরকম কিছু হ্রাস করার কথা বলেছেন (এই মুহুর্তে আমার উপর বইটি নেই)।
সম্পাদনা:
"উল্লম্ব দূরত্ব" এর প্রাথমিক ধারণাটি হ'ল আপনি এটিকে বোঝার জন্য আপনার উত্স কোডের চারপাশে লোককে ঝাঁপিয়ে পড়া এড়াতে চান। যদি বিষয়গুলি সম্পর্কিত হয়, তবে তাদের একসঙ্গে হওয়া উচিত। সম্পর্কযুক্ত জিনিসগুলি আরও দূরে হতে পারে।
ক্লিন কোডের অধ্যায় 5 (দুর্দান্ত বই, বিটিডাব্লু) মিঃ মার্টিন কীভাবে অর্ডার কোড দেওয়ার পরামর্শ দিচ্ছেন সে সম্পর্কে একটি বিশদ বিবরণে যায়। তিনি পরামর্শ দিয়েছেন যে রিডিং কোডে খবরের কাগজের নিবন্ধ পড়ার মতো ধরণের কাজ করা উচিত: উচ্চ-স্তরের বিশদটি প্রথমে (শীর্ষে) আসে এবং আপনি পড়ার সাথে সাথে আরও বিশদ পাবেন। তিনি বলেছেন, "যদি একটি ফাংশন অন্যটিকে কল করে তবে সেগুলি উল্লম্বভাবে কাছাকাছি হওয়া উচিত এবং যদি সম্ভব হয় তবে কলারকে কলির উপরে হওয়া উচিত।" অতিরিক্তভাবে, সম্পর্কিত ধারণাগুলি একসাথে হওয়া উচিত।
সুতরাং এখানে একটি স্বীকৃত উদাহরণ যা বিভিন্ন উপায়ে খারাপ (ওও নকশার নকশা; double
অর্থের জন্য কখনই ব্যবহার করবেন না ) তবে ধারণাটি চিত্রিত করে:
public class Employee {
...
public String getEmployeeId() { return employeeId; }
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }
public double calculatePaycheck() {
double pay = getSalary() / PAY_PERIODS_PER_YEAR;
if (isEligibleForBonus()) {
pay += calculateBonus();
}
return pay;
}
private double getSalary() { ... }
private boolean isEligibleForBonus() {
return (isFullTimeEmployee() && didCompleteBonusObjectives());
}
public boolean isFullTimeEmployee() { ... }
private boolean didCompleteBonusObjectives() { ... }
private double calculateBonus() { ... }
}
পদ্ধতিগুলি অর্ডার করা হয়েছে যাতে উপরে থেকে নীচে নেমে আমাদের কাজ করে, তাদের কল করে এমনগুলির নিকটেই থাকে। আমরা যদি সমস্ত private
পদ্ধতিগুলি নীচে public
রেখে দিয়েছিলাম তবে প্রোগ্রামের প্রবাহটি অনুসরণ করতে আপনাকে আরও বেশি লাফিয়ে ঝাঁপিয়ে পড়তে হবে।
getFirstName
এবং getLastName
ধারণাগতভাবে সম্পর্কিত (এবং getEmployeeId
সম্ভবত খুব বেশি), তাই তারা একত্রে কাছাকাছি রয়েছে। আমরা এগুলি সমস্তকে নীচে নিয়ে যেতে পারি, তবে আমরা getFirstName
শীর্ষে এবং getLastName
নীচে দেখতে চাই না ।
আশা করি এটি আপনাকে প্রাথমিক ধারণা দেয়। আপনি যদি এই ধরণের বিষয়ে আগ্রহী হন তবে আমি দৃ strongly়ভাবে পড়ার পরামর্শ দিচ্ছি Clean Code
।