আমি বর্তমানে লিখছি এমন একটি ক্লাসের একটি ইন্টারফেস সম্পর্কে চিন্তা করছি। এই শ্রেণিতে একটি চরিত্রের জন্য শৈলী রয়েছে, উদাহরণস্বরূপ, চরিত্রটি সাহসী, তির্যক, আন্ডারলাইন করা ইত্যাদি etc. আমি নিজের সাথে দু'দিন ধরেই বিতর্ক করে যাচ্ছি যে পদ্ধতিগুলি মানগুলিতে পরিবর্তন করে সেগুলির জন্য আমাকে গিটার / সেটার বা যৌক্তিক নাম ব্যবহার করা উচিত কিনা I've এই শৈলী। আমি লজিকাল নামগুলি পছন্দ করতে চাইছি, এর অর্থ কোড লেখার অর্থ যা কার্যকর এবং তাত্ত্বিক নয়। আমাকে যদি আপনি একটি উদাহরণ দিতে।
আমি একটি বর্গ পেয়েছেন CharacterStyles
যা সদস্য ভেরিয়েবল আছে bold
, italic
, underline
(এবং কিছু অন্যদের, কিন্তু আমি এটা সহজ রাখা তাদের ছেড়ে দেব)। প্রোগ্রামের অন্যান্য অংশগুলিকে এই ভেরিয়েবলগুলি অ্যাক্সেস করার অনুমতি দেওয়ার সবচেয়ে সহজ উপায় হ'ল গিটার / সেটার পদ্ধতিগুলি লিখতে হবে, যাতে আপনি করতে পারেন styles.setBold(true)
এবং styles.setItalic(false)
।
তবে আমি এটি পছন্দ করি না। কেবলমাত্র অনেকেই বলে না যে গ্রাহকরা / সেটটাররা এনক্যাপসুলেশন ভেঙে দেয় (এটি কি আসলেই খারাপ?), তবে বেশিরভাগ কারণেই এটি আমার কাছে যৌক্তিক বলে মনে হয় না। আমি একটি পদ্ধতি styles.format("bold", true)
বা এই জাতীয় কিছু দিয়ে একটি চরিত্রের স্টাইল আশা করি তবে এই সমস্ত পদ্ধতির মাধ্যমে নয়।
এক সমস্যা যদিও এখন পর্যন্ত। যেহেতু আপনি সি ++ তে স্ট্রিংয়ের বিষয়বস্তু দ্বারা কোনও অবজেক্টের সদস্য ভেরিয়েবল অ্যাক্সেস করতে পারবেন না, তাই আমাকে হয় সমস্ত স্টাইলের জন্য একটি বড় if-বিবৃতি / স্যুইচ ধারক লিখতে হবে, অথবা আমাকে শৈলীগুলি কোনও এসোসিয়েটিভ অ্যারেতে সঞ্চয় করতে হবে ( mAP)।
আমি সেরা উপায় কি তা বুঝতে পারি না। এক মুহুর্তে আমি মনে করি আমার লেখক / সেটটার লিখতে হবে এবং পরের মুহূর্তে আমি অন্য পথে ঝুঁকছি। আমার প্রশ্ন: আপনি কি করবেন? এবং আপনি এটা কেন করবেন?
bold
সেট true
এবং অন্যান্য ভেরিয়েবল undefined, অন্যান্য ভেরিয়েবলের জন্য সংগ্রহকারী পদ্ধতি, পিতা বা মাতা শৈলী (যা অন্য সম্পত্তি সংরক্ষণ করা হয়) এর মান উচিত কিছুদিনের জন্য সংগ্রহকারী bold
সম্পত্তি ফেরত পাঠাবেন true
। নাম এবং উপায়টি ইন্টারফেসে প্রদর্শিত হওয়ার মতো আরও কিছু জিনিস রয়েছে।