সম্পত্তি সেটারে যুক্তি যুক্ত করা কি খারাপ অভ্যাস হিসাবে বিবেচিত হয়?


28

আমি একটি প্রকল্পে ঝাঁপিয়েছি এবং আমি দেখতে পাচ্ছি যে অন্যান্য বিকাশকারী সংশ্লেষিত বৈশিষ্ট্যগুলির সেটটারগুলিতে প্রচুর যুক্তি যুক্ত করছে। আমি বুঝতে পারি এটি কীভাবে কাজ করে তবে আমি মনে করি যে প্রোগ্রামটির প্রবাহটি বুঝতে অসুবিধা হয়; কোডটি পড়ার সময় যখনই আমি দেখি self.something = whatever, আমি সর্বদা পরীক্ষা করে দেখি যে somethingসেটারটি ওভাররাইড করা হয়েছে কিনা।

এই বিষয়ে আপনার মতামত কি? আপনি কি মনে করেন এটি খারাপ স্থাপত্যের চিহ্ন বা বিস্তৃত সমাধানের লক্ষণ?

আমি যদি আপনার প্রাসঙ্গিক লিঙ্ক / উত্স থাকে তবে এ সম্পর্কে আরও পড়তে পেরে আনন্দিত হব, ভাল গুগল ফলাফল পাওয়া খুব কঠিন তাই আমি এখানেও জিজ্ঞাসা করার সিদ্ধান্ত নিয়েছি।

কোনও উত্তরের জন্য ধন্যবাদ এবং দয়া করে নোট করুন যে আপনি ট্যাগটি না দেখে সেক্ষেত্রে আমি উদ্দেশ্য সি সম্পর্কে কথা বলছি (যদিও এটি আমার অনুমান করা কোনও ভাষা নির্দিষ্ট সমস্যা হওয়া উচিত নয়)।


5
কি ধরণের যুক্তি? বৈধতা যুক্তি স্থাপনে কোনও ভুল নেই, উদাহরণস্বরূপ। অন্যদিকে, একটি সেটার যা কয়েকটি ইভেন্ট প্রেরণ করে, একটি ওয়েব পরিষেবা কল করে এবং ইউআই আপডেট করে সম্পূর্ণ ভুল।
আর্সেনী মোরজেনকো

@ মাইনমা ​​আমি সম্মতি দিচ্ছি যে বৈধতা ঠিক আছে - সম্ভবত কিছু পর্যবেক্ষকও যুক্ত করতে পারেন, তাই না? সেটারে রাখার জন্য আপনি যেটিকে বেশি উপযুক্ত বলে মনে করেন তার কয়েকটি উদাহরণ আপনি দিতে পারেন?
ফাই

প্রকৃতপক্ষে, পর্যবেক্ষকরা ঠিক বলেছেন। সেটারের জন্য উপযুক্ত জিনিসগুলি হিসাবে, আমি আরও অভিজ্ঞ বিকাশকারীদের এই প্রশ্নের উত্তর দিতে দিই।
আর্সেনি মরজেনকো

উত্তর:


44

সম্পত্তি সেটারে যুক্তি যুক্ত করা কি খারাপ অভ্যাস হিসাবে বিবেচিত হয়?

না

ক্লাস ডিজাইনারদের ক্ষেত্রের অ্যাক্সেস এবং অ্যাসাইনমেন্টের সুবিধাজনক ইন্টারফেসের সাথে যুক্তি যুক্ত করার অনুমতি দেওয়ার জন্য সম্পত্তিগুলি আবিষ্কার করা হয়েছিল।

খুব বেশী কত? এটি শ্রেণীর দায়িত্বের উপর নির্ভর করে। এখানে কিছু জিনিস যা সম্পত্তি সংস্থার মধ্যে রাখা যুক্তিসঙ্গত:

  • কিছু উদ্ভূত মান আপডেট করুন
  • পর্যবেক্ষককে অবহিত করুন যে শ্রেণি রাজ্য পরিবর্তিত হয়েছে
  • কিছু ধারণিত বস্তুতে পরিবর্তন প্রচার করুন
  • একটি ব্যাকিং স্টোরে পরিবর্তন প্রচার করুন
  • বৈধতা সম্পাদন

প্রোগ্রামিং সহজ হয় যখন ক্লাসগুলির ইন্টারফেস থাকে যা ক্লাস কী করতে পারে তা স্পষ্ট করে তোলে, কলাররা কীভাবে এটি করা হচ্ছে তা ভেবে না করে। সম্পত্তি সেটারের পিছনে যুক্তি স্থাপন করা ক্লাসগুলিকে একটি সাধারণ ইন্টারফেসের পিছনে তাদের প্রয়োগকে আড়াল করতে দেয়। কিছু শ্রেণীর জন্য, কোনও পদ্ধতির প্রয়োজন হয় না। কেবল বৈশিষ্ট্যগুলি সেট করে নলগুলি ঘুরিয়ে দিন এবং বৈশিষ্ট্য পেয়ে আউটপুটটি পড়ুন।


13
বৈধতা সম্পাদন করুন ...
রবার্ট হার্ভে

কোনও সেটার ওভাররাইড পদ্ধতিতে কোনও কালেকশন ভিউ বা টেবিলভিউ পুনরায় লোড করা কত ভাল?
কৃষ্ণন

15

সেটারগুলি সাধারণত কোনও উল্লেখযোগ্য পার্শ্ব প্রতিক্রিয়া বা ভারী গণনা ছাড়াই কোনও অবজেক্টের অবস্থা পরিবর্তন করতে ব্যবহৃত হয়; এর জন্য পদ্ধতি এবং ফাংশন ব্যবহার করুন। সেটার বাস্তবায়নের প্রাথমিক কারণটি বৈধ স্থিতি পরিবর্তন এবং বজায় রাখা । সুতরাং, সীমাবদ্ধতা সীমাবদ্ধ করা, পুনঃ গণনার অনুরোধের জন্য পতাকা সেট করা বা সম্পর্কিত বৈশিষ্ট্যগুলি সমন্বয় করা একেবারে ঠিক।


7

আমি উদ্দেশ্য সি সম্পর্কে জানি না, তবে আপনি যেমন বলেছেন, এটি কোনও ওও ভাষার পক্ষে সাধারণ প্রশ্ন question সবার আগে এবং আসলে এর সাথে সম্পর্কিত, প্রথমে সেটার এবং গেটার রাখা উচিত কিনা তা আলোচনার বিষয় (কিছু ক্ষেত্রে তাদের অস্তিত্ব কোনও ফ্রেমওয়ার্ক বা লাইব্রেরি ব্যবহারের দ্বারা ন্যায্য করা হয়)।

আমি বিশ্বাস করি যে পদ্ধতিটির নামটি পদ্ধতিটি কী করে এবং সমস্ত পদ্ধতি কী করে তা ব্যাখ্যা করা উচিত। অতিরিক্তভাবে সেই পদ্ধতির সাথে সম্পর্কিত ডকুমেন্টেশনগুলিকে আরও স্পষ্টভাবে বর্ণনা করা উচিত। এই অর্থে "সেট" + oun বিশেষ্য form ফর্মের একটি পদ্ধতির নামের কোনও ভেরিয়েবলের মান নির্ধারণ করা ব্যতীত কোনও পার্শ্ব প্রতিক্রিয়া থাকা উচিত নয় এবং এটি এর সাথে সম্পর্কিত কেবলমাত্র ক্রিয়া হওয়া উচিত। যুক্তিটি বৈধ কিনা তা পরীক্ষা করা গ্রহণযোগ্য, তবে এটির ডকুমেন্টেশনে এটি বর্ণনা করা উচিত।


1
"সেটটার এবং গেটার আছে কিনা" এর জন্য +1। এবং "পদ্ধতির নামের জন্য অন্য একটি +1 এর দ্বারা এটি কী করে তা ব্যাখ্যা করা উচিত"।
আভিভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.