আপনি গেটার্স ছাড়া ভাল কোড লিখতে পারবেন না।
কারণগুলি না হওয়ার কারণ, কারণগুলি এনক্যাপসুলেশনটি না ভাঙে, তারা তা করে। এটি নয় কারণ গ্রাহকরা ওওপি অনুসরণ করতে লোকেদের প্ররোচিত না করে যা তাদের কাজ করে এমন ডেটা সহ পদ্ধতিগুলি রাখে। তারা করে. না, সীমানার কারণে আপনার গেটার দরকার।
এনক্যাপসুলেশন এবং পদ্ধতিগুলির সাথে একত্রে রাখার ধারণাগুলি তারা যে ডেটাতে কাজ করে সেগুলি কার্যকরভাবে কার্যকর হয় না যখন আপনি কোনও সীমানায় চলে যান যা আপনাকে কোনও পদ্ধতি চালিত করতে বাধা দেয় এবং তাই আপনাকে ডেটা স্থানান্তর করতে বাধ্য করে।
এটা সত্যিই সহজ। কোনও সীমানা না থাকলে আপনি যদি গেটারগুলি ব্যবহার করেন তবে আপনার কোনও সত্যিকারের অবজেক্ট নেই। সমস্ত প্রক্রিয়াগত ঝোঁক শুরু হয়। এটি কখনও যেমন কাজ করে তেমনি কাজ করে।
সত্যই ওওপি এমন কিছু নয় যা আপনি সর্বত্র ছড়িয়ে দিতে পারেন। এটি কেবল সেই সীমার মধ্যেই কাজ করে।
এই গণ্ডিগুলি ক্ষুরের পাতলা নয়। তাদের মধ্যে কোড রয়েছে। এই কোডটি ওওপি হতে পারে না। এটি কার্যকরীও হতে পারে না। এই কোডের কোনওটিই আমাদের আদর্শগুলি থেকে সরে যায় নি যাতে এটি কঠোর বাস্তবতার সাথে মোকাবিলা করতে পারে।
মাইকেল ফিটারস সেই সাদা সংযোগকারী টিস্যুর পরে এই কোডটিকে ফ্যাসিয়া বলে called
এটি সম্পর্কে চিন্তা করার এক দুর্দান্ত উপায়। এটি ব্যাখ্যা করে কেন একই কোড বেসে উভয় ধরণের কোড রাখা ঠিক ok এই দৃষ্টিকোণ ছাড়াই অনেক নতুন প্রোগ্রামার তাদের আদর্শকে দৃ hard়ভাবে আঁকড়ে ধরে রাখেন, তারপরে তাদের হৃদয় ভেঙে যায় এবং যখন তারা প্রথম সীমানা আঘাত করে তখন এই আদর্শগুলিকে ছেড়ে দেয়।
আদর্শগুলি কেবল তাদের যথাযথ জায়গায় কাজ করে। তারা সর্বত্র কাজ করে না বলে তাদের ছেড়ে দেবেন না। তারা যেখানে কাজ করে সেখানে তাদের ব্যবহার করুন। সেই জায়গাটি হ'ল সরস অংশ যা fascia সুরক্ষা দেয়।
সীমানার একটি সাধারণ উদাহরণ একটি সংগ্রহ। এটি কিছু ধারণ করে এবং এটি কী সে সম্পর্কে কোনও ধারণা নেই। কীভাবে কোনও সংগ্রহ ডিজাইনার হোল্ড অবজেক্টের আচরণগত কার্যকারিতাটিকে সংগ্রহে স্থানান্তর করতে পারে যখন তাদের কোনও ধারণা নেই যে এটি কী ধরে রাখবে? আপনি পারবেন না। আপনি একটি সীমানা বিরুদ্ধে আপ। যে কারণে সংগ্রহের গ্রাহকরা রয়েছে।
এখন আপনি যদি জানতেন, আপনি সেই আচরণটি সরিয়ে ফেলতে পারেন, এবং স্থিতিশীল অবস্থা এড়াতে পারেন। যখন আপনি জানেন, আপনার উচিত। আপনি শুধু সবসময় জানেন না।
কিছু লোক একে একে যুক্তিবাদী বলে অভিহিত করে। এবং এটা করা হয়. তবে কেন আমাদের ব্যবহারিক হতে হবে তা জানতে পেরে ভালো লাগল।
আপনি প্রকাশ করেছেন যে আপনি শব্দার্থক যুক্তি শুনতে চান না এবং মনে হয় সর্বত্র "বুদ্ধিমান গেটার" রাখার পক্ষে পরামর্শ দিচ্ছেন। আপনি এই ধারণাটিকে চ্যালেঞ্জ জানাতে বলছেন। আমি মনে করি আপনি যে ধারণাটি তৈরি করেছেন তাতে সমস্যাটি আমি দেখতে পাচ্ছি। তবে এটিও মনে করে যে আমি জানি আপনি কোথায় থেকে এসেছেন কারণ আমি সেখানে এসেছি।
আপনি যদি চান সর্বত্র পাইথনের দিকে তাকান। এখানে কোনও ব্যক্তিগত কীওয়ার্ড নেই। তবু পাইথন ওওওপি ঠিক জরিমানা করে। কিভাবে? তারা একটি শব্দার্থক কৌশল ব্যবহার করে। তারা নেতৃস্থানীয় আন্ডারস্কোর সহ প্রাইভেট হওয়ার জন্য যে কোনও কিছু নাম রাখে name এমনকি আপনি এটি থেকে পড়ার অনুমতি পেয়েছেন তবে আপনি যদি এটি করার জন্য দায়িত্ব গ্রহণ করেন তবে take "আমরা সবাই এখানে প্রাপ্তবয়স্ক", তারা প্রায়শই বলে।
সুতরাং যে মধ্যে পার্থক্য কি এবং জাভা বা সি # সব কিছু মধ্যে getters স্থাপন? দুঃখিত তবে এটি শব্দার্থবিজ্ঞান। পাইথনস আন্ডারস্কোর কনভেনশন আপনার কাছে স্পষ্টভাবে ইঙ্গিত দেয় যে আপনি কর্মীদের কেবল দরজার পিছনে হাঁটাচ্ছেন। সবকিছুর উপরে চড় মারতে হবে এবং আপনি সেই সিগন্যালটি আলগা করুন। প্রতিবিম্বের সাহায্যে আপনি যে কোনও উপায়ে প্রাইভেটটি ছিনিয়ে নিতে পারেন এবং এখনও সিনেমিক সিগন্যালটি হারাতে পারেননি। এখানে তৈরি করার জন্য কোনও কাঠামোগত যুক্তি নেই।
সুতরাং আমরা যা রেখেছি তা হ'ল "কর্মচারীদের কেবলমাত্র" চিহ্নটি কোথায় স্তব্ধ করতে হবে তা সিদ্ধান্ত নেওয়া। কী ব্যক্তিগত বিবেচনা করা উচিত? আপনি যে "বুদ্ধিমান getters" কল। যেমনটি আমি বলেছি, প্রাপ্তির পক্ষে সর্বোত্তম ন্যায়সঙ্গততা এমন একটি সীমানা যা আমাদের আদর্শ থেকে দূরে সরিয়ে দেয়। এর ফলে সমস্ত কিছুতে ফলাফল পাওয়া উচিত নয়। যখন এটি কোনও গেটের ফলস্বরূপ ঘটে তখন আপনার আচরণটি আরও সরস বিটে নিয়ে যাওয়া উচিত যেখানে আপনি এটি রক্ষা করতে পারেন।
এই বিচ্ছেদটি কয়েকটি পদে জন্ম দিয়েছে। একটি ডেটা ট্রান্সফার অবজেক্ট বা ডিটিও, কোনও আচরণ রাখে না। একমাত্র পদ্ধতিটি হ'ল গেটার এবং কখনও সেটটার, কখনও কখনও কনস্ট্রাক্টর। এই নামটি দুর্ভাগ্যজনক কারণ এটি মোটেই সত্যিকারের বস্তু নয়। গেটার্স এবং সেটটাররা আসলেই কেবল ডিবাগিং কোড যা আপনাকে ব্রেকপয়েন্ট নির্ধারণের জন্য জায়গা দেয়। যদি এটির প্রয়োজন না হয় তবে তারা কেবল সর্বজনীন ক্ষেত্রের স্তূপ হয়ে উঠত। সি ++ তে আমরা তাদের স্ট্রাক্ট বলতাম। একটি সি ++ শ্রেণীর মধ্যে কেবল ততটাই পার্থক্য ছিল যে তারা জনসাধারণের কাছে খেলাপি হয়েছিল।
ডিটিওগুলি দুর্দান্ত কারণ আপনি এগুলি একটি সীমানা প্রাচীরের উপরে ফেলে দিতে পারেন এবং আপনার অন্যান্য পদ্ধতিগুলি একটি সুন্দর সরস আচরণের বস্তুতে নিরাপদে রাখতে পারেন। একটি সত্য বস্তু। এটির encapsulation লঙ্ঘন করার জন্য কোনও গেটর নেই। আমার আচরণের অবজেক্টগুলি প্যারামিটার অবজেক্ট হিসাবে তাদের ডিটিও খেতে পারে । ভাগ করে নেওয়া পরিবর্তনীয় অবস্থা রোধ করতে কখনও কখনও আমাকে এর একটি প্রতিরক্ষামূলক অনুলিপি তৈরি করতে হয় । আমি সীমানার মধ্যে সরস অংশের ভিতরে পরিবর্তনযোগ্য ডিটিও'র চারপাশে ছড়িয়ে দিই না। আমি তাদের encapsulate। আমি তাদের লুকিয়ে রাখি। এবং অবশেষে যখন আমি একটি নতুন সীমানায় চলে যাই তখন আমি একটি নতুন ডিটিও স্পিন করি এবং প্রাচীরের উপরে ফেলে দিই যাতে এটি অন্য কারও সমস্যা তৈরি করে।
তবে আপনি এমন পরিচিতি সরবরাহ করতে চান যা পরিচয় প্রকাশ করে। ভাল অভিনন্দন আপনি একটি সীমানা খুঁজে পেয়েছি। সত্তাগুলির একটি পরিচয় রয়েছে যা তাদের রেফারেন্সের বাইরে। এটি তাদের স্মৃতির ঠিকানার বাইরে। সুতরাং এটি কোথাও সংরক্ষণ করতে হবে। এবং কিছু এটির পরিচয় দিয়ে এই জিনিসটি উল্লেখ করতে সক্ষম হতে হবে। পরিচিতি যা পরিচয় প্রকাশ করে তা পুরোপুরি যুক্তিসঙ্গত। কোডের একটি স্তূপ যা সেই গেটরকে সিদ্ধান্ত গ্রহণের জন্য ব্যবহার করে যা সত্তা নিজেই নিতে পারে not
শেষ পর্যন্ত এটি ভুলকারীদের অস্তিত্ব নয়। তারা সরকারী ক্ষেত্রের তুলনায় অনেক ভাল। খারাপ কী তা যখন আপনি যখন না হন তখন আপনাকে অবজেক্ট ওরিয়েন্টেড বলে ভান করার জন্য ব্যবহার করা হয়। প্রাপকরা ভাল আছেন। অবজেক্ট ওরিয়েন্টেড হওয়া ভাল। প্রযোজকগণ অবজেক্ট ওরিয়েন্টেড নয়। অবজেক্ট ওরিয়েন্টেড হওয়ার জন্য কোনও নিরাপদ জায়গা খোদাই করার জন্য গেটরস ব্যবহার করুন।