এটা করবেন না; এটি স্টাফকে অতিরিক্ত জটিল করে তুলবে এবং আপনার এটির দরকার নেই
... আমি উত্তর এখানে 2 বছর আগে লিখতে হবে। এখন, যদিও আমি এতটা নিশ্চিত নই; প্রকৃতপক্ষে, সাম্প্রতিক মাসগুলিতে আমি পুরানো কোডটি এই ফর্ম্যাটে স্থানান্তরিত করতে শুরু করেছি, কারণ আমার কাছে এর চেয়ে ভাল আর কিছুই নেই, কারণ নতুন বৈশিষ্ট্যগুলি প্রয়োগ করার জন্য বা বিদ্যমান কোডগুলি পরিবর্তনের জন্য সত্যই আমার এটি প্রয়োজন ছিল। আমি অন্যদের সেই কোডটি দেখেছি এমন স্বয়ংক্রিয়ভাবে বিদ্বেষগুলি বুঝতে পেরেছি, তবে আমি মনে করি এটি এমন কিছু যা গুরুতর চিন্তার দাবিদার।
উপকারিতা
সুবিধার মধ্যে প্রধান হ'ল কোডটি সংশোধন ও প্রসারিত করার ক্ষমতা । আপনি যদি ব্যবহার
class Point {
int x,y;
// other point operations
}
আশেপাশে কয়েকটি সংখ্যক পূর্ণসংখ্যার পরিবর্তে - যা এমন কিছু যা দুর্ভাগ্যক্রমে, অনেকগুলি ইন্টারফেস করে - তারপরে পরে আরও একটি মাত্রা যুক্ত করা আরও সহজ হয়ে যায়। বা টাইপ পরিবর্তন করুন double
। আপনি যদি এর পরিবর্তে ব্যবহার করেন List<Author> authors
বা এর List<Person> authors
পরিবর্তে List<String> authors
কোনও লেখক যা উপস্থাপন করেন তাতে আরও তথ্য যুক্ত করা আরও সহজ হয়ে যায়। এটিকে এভাবে লিখলে মনে হয় আমি স্পষ্ট করে বলছি, তবে বাস্তবে আমি নিজে অনেকবার এইভাবে স্ট্রিং ব্যবহার করার জন্য দোষী হয়েছি, বিশেষত এমন ক্ষেত্রে যেখানে এটি শুরুতে সুস্পষ্ট ছিল না তখন আমার চেয়ে আরও বেশি প্রয়োজন একটি স্ট্রিং
আমি বর্তমানে কিছু স্ট্রিং লিস্টটি রিফ্যাক্টর করার চেষ্টা করছি যা আমার কোড জুড়ে জড়িত রয়েছে কারণ আমার আরও তথ্যের প্রয়োজন আছে, এবং আমি ব্যথা অনুভব করছি: \
এর বাইরে, আমি ব্লগের লেখকের সাথে একমত যে এটি আরও অর্থবোধক তথ্য বহন করে , যা পাঠককে বুঝতে সহজ করে তোলে। প্যারামিটারগুলিতে প্রায়শই অর্থপূর্ণ নাম দেওয়া হয় এবং ডকুমেন্টেশনের একটি উত্সর্গীকৃত লাইন পাওয়া যায়, ক্ষেত্র বা স্থানীয়দের ক্ষেত্রে এটি প্রায়শই হয় না।
চূড়ান্ত সুবিধাটি হ'ল ধরণের সুরক্ষা , স্পষ্ট কারণে, তবে আমার দৃষ্টিতে এটি এখানে একটি ছোটখাটো জিনিস।
অপূর্ণতা
লিখতে বেশি সময় লাগে । একটি ছোট ক্লাস রচনা দ্রুত এবং সহজ তবে অনায়াসে নয় , বিশেষত আপনার যদি এই ক্লাসগুলির প্রচুর প্রয়োজন হয়। যদি আপনি নিজেকে নতুন 3 টি মোড়কের ক্লাস লেখার জন্য প্রতি 3 মিনিটে থামতে দেখেন তবে এটি আপনার ঘনত্বের জন্যও সত্যিকারের ক্ষতি হতে পারে। তবে আমি ভাবতে চাই যে প্রচেষ্টার এই অবস্থাটি সাধারণত কোনও কোডের লেখার প্রথম পর্যায়ে ঘটবে; কোন সংস্থাগুলি জড়িত থাকতে হবে তা সম্পর্কে আমি সাধারণত খুব ভাল ধারণা পেতে পারি।
এটি প্রচুর রিন্ডানডেন্ট সেটার (বা নির্মাণ) এবং গেটারদের জড়িত করতে পারে । ব্লগ লেখক new Point(x(10), y(10))
পরিবর্তে এর সত্যই কুৎসিত উদাহরণ দেয় new Point(10, 10)
এবং আমি যুক্ত করতে চাই যে কোনও ব্যবহারের Math.max(p.x.get(), p.y.get())
পরিবর্তে জিনিসগুলিও জড়িত থাকতে পারে Math.max(p.x, p.y)
। এবং লম্বা কোডটি প্রায়শই পড়তে শক্ত মনে করা হয় এবং ঠিক তাই। তবে সমস্ত সততার সাথে আমার মনে হয় প্রচুর কোডগুলি বস্তুর চারপাশে চলে আসে, এবং কেবলমাত্র নির্বাচিত পদ্ধতিগুলি এটি তৈরি করে এবং এর কম পরিমাণে বিশদ বিবরণে অল্প অ্যাক্সেসের প্রয়োজন হয় (যা যাইহোক ওওপি নয়)।
তর্কসাধ্য
আমি বলব যে এটি কোডের পঠনযোগ্যতার সাথে বিতর্কযোগ্য with হ্যাঁ, আরও শব্দাবদ্ধ তথ্য, তবে লম্বা কোড। হ্যাঁ, প্রতিটি স্থানীয় ভূমিকা বোঝা সহজ, তবে আপনি যদি না যান এবং এর ডকুমেন্টেশন না পড়েন তবে এটির সাথে আপনি কী করতে পারবেন তা বোঝা শক্ত।
অন্যান্য বেশিরভাগ প্রোগ্রামিং স্কুলগুলির মতোই, আমি মনে করি এটি একে চরম পর্যায়ে নিয়ে যাওয়া অস্বাস্থ্যকর। আমি নিজেকে কখনই পৃথক x এবং y সমন্বয়কে আলাদা ধরণের হতে দেখি না। আমার মনে Count
হয় না যখন প্রয়োজন int
পর্যাপ্ত হয়। আমি unsigned int
সি এর ব্যবহারকে অপছন্দ করি - তাত্ত্বিকভাবে ভাল থাকা সত্ত্বেও , এটি আপনাকে পর্যাপ্ত তথ্য দেয় না, এবং সেই জাদুকরী -1 সমর্থন করার জন্য আপনার কোডটি পরে প্রসারিত করা নিষেধ করে। কখনও কখনও আপনার সরলতার প্রয়োজন হয়।
আমি মনে করি যে ব্লগ পোস্টটি চূড়ান্ত দিক থেকে কিছুটা। তবে সামগ্রিকভাবে, আমি বেদনাদায়ক অভিজ্ঞতা থেকে শিখেছি যে এর পিছনে মূল ধারণাটি সঠিক জিনিস থেকে তৈরি করা হয়।
আমার ওভার-ইঞ্জিনিয়ারড কোডটির প্রতি গভীর বিদ্বেষ রয়েছে। আমি সত্যিই করি। তবে সঠিকভাবে ব্যবহৃত হয়েছে, আমি এই ওভার ইঞ্জিনিয়ারিং মনে করি না।