এর কোন সুস্পষ্ট উত্তর নেই। যদিও প্রশ্নটি সংকীর্ণ, ব্যাখ্যাগুলি নেই are
আমার জন্য, এটি চাইলে ওকামের রেজারের মতো কিছু। এটি একটি আদর্শ যেখানে আমি আমার বর্তমান কোডটির বিপরীতে পরিমাপ করার চেষ্টা করি। সহজ এবং সরল কথায় এটি পেরেক করা শক্ত। আর একটি রূপক হবে »একটি বিষয়« যা বিমূর্ত, অর্থাত্ বোঝা শক্ত, একক দায়িত্ব « তৃতীয় বিবরণটি হবে st বিমূর্ততার এক স্তরের সাথে ডিল করা «
এটি ব্যবহারিকভাবে কী বোঝায়?
ইদানীং আমি কোডিংয়ের একটি স্টাইল ব্যবহার করি যা বেশিরভাগ দুটি ধাপ নিয়ে গঠিত:
প্রথম পর্যায়টি সৃজনশীল বিশৃঙ্খলা হিসাবে সবচেয়ে বেশি বর্ণিত। এই পর্যায়ে আমি কোড লিখি কারণ চিন্তাগুলি প্রবাহিত হচ্ছে - যেমন কাঁচা এবং কুশ্রী u
দ্বিতীয় ধাপ সম্পূর্ণ বিপরীত। এটি হারিকেনের পরে পরিষ্কার করার মতো। এটি সবচেয়ে বেশি কাজ এবং শৃঙ্খলা নেয়। এবং তারপরে আমি কোডটি ডিজাইনারের দৃষ্টিকোণ থেকে দেখছি।
আমি এখন পাইথনে বেশিরভাগ ক্ষেত্রেই কাজ করছি, যা আমাকে পরে অবজেক্ট এবং ক্লাস সম্পর্কে চিন্তা করতে দেয়। প্রথম পর্ব - আমি কেবল ফাংশন লিখি এবং প্রায় মডিউলগুলিতে এলোমেলোভাবে এগুলি ছড়িয়েছি। ইন ফেজ ২ , পরে আমি যাচ্ছি জিনিষ পেয়েছিলাম, আমি কি মডিউল পুলিশ যা সমাধানের অংশ সময়ে পুরো বিষয়টা বিস্তারিত বিবেচনা আছে। এবং মডিউলগুলির মাধ্যমে স্কিমিং করার সময়, বিষয়গুলি আমার কাছে উদ্ভূত হয়। কিছু ফাংশন থিম্যাটিকভাবে সম্পর্কিত হয়। এগুলি ক্লাসের ভাল প্রার্থী । এবং আমি ফাংশনগুলিকে ক্লাসে পরিণত করার পরে - যা প্রায় শেষ হয়ে গেছে self
এবং পাইথনের প্যারামিটার তালিকায় যুক্ত হয়েছে;) - আমি SRP
অন্যান্য মডিউল এবং ক্লাসে কার্যকারিতা ছড়িয়ে দিতে ওসামের রেজারের মতো ব্যবহার করি ।
একটি বর্তমান উদাহরণ অন্য দিন ছোট রফতানি কার্যকারিতা লিখতে পারে ।
একটি জিপে সিএসভি , এক্সেল এবং সম্মিলিত এক্সেল শিটের প্রয়োজন ছিল ।
সরল কার্যকারিতা প্রতিটি তিনটি দর্শন (= ফাংশন) এ সম্পন্ন হয়েছিল । প্রতিটি ফাংশন ফিল্টার নির্ধারণের জন্য একটি সাধারণ পদ্ধতি এবং ডেটা পুনরুদ্ধারে দ্বিতীয় পদ্ধতি ব্যবহার করে। তারপরে প্রতিটি ফাংশনে রফতানির প্রস্তুতি নেওয়া হয়েছিল এবং সার্ভারের প্রতিক্রিয়া হিসাবে সরবরাহ করা হয়েছিল।
বিমূর্তির অনেকগুলি স্তর মিশ্রিত হয়েছিল:
আমি) আগত / বহির্গামী অনুরোধ / প্রতিক্রিয়া সাথে ডিল
দ্বিতীয়) ফিল্টার নির্ধারণ
III) তথ্য পুনরুদ্ধার করা
চতুর্থ) তথ্যের রূপান্তর
exporter
প্রথম পদক্ষেপ II-IV স্তরগুলি মোকাবেলা করার জন্য একটি বিমূর্ততা ( ) ব্যবহার করা সহজ পদক্ষেপ ছিল ।
অনুরোধ / প্রতিক্রিয়াগুলির সাথে মোকাবিলা করার বিষয়টি কেবলমাত্র অবশিষ্ট ছিল । বিমূর্তির একই স্তরে অনুরোধের প্যারামিটারগুলি বের করা হচ্ছে যা ঠিক আছে। সুতরাং আমার এই দৃষ্টিভঙ্গির জন্য একটি "দায়িত্ব" ছিল।
দ্বিতীয়ত, আমাকে রফতানিকারককে ভেঙে ফেলতে হয়েছিল, যা আমরা দেখেছি কমপক্ষে আরও তিনটি স্তর বিমূর্তকরণ নিয়ে গঠিত।
ফিল্টার মানদণ্ড নির্ধারণ এবং প্রকৃত পুনরুদ্ধার প্রায় বিমূর্ততার একই স্তরের (ডেটার সঠিক উপসেট পেতে ফিল্টারগুলির প্রয়োজন হয়)। এই স্তরগুলিকে ডেটা অ্যাক্সেস লেয়ারের মতো কিছুতে রাখা হয়েছিল ।
পরবর্তী পদক্ষেপে আমি প্রকৃত রফতানি ব্যবস্থাগুলি ভেঙে দিয়েছি: যেখানে অস্থায়ী ফাইলটিতে লেখার প্রয়োজন ছিল, আমি এটিকে দুটি "দায়িত্ব" হিসাবে বিভক্ত করেছিলাম: একটি হ'ল ডিস্কে ডেটা লেখার জন্য এবং অন্য অংশ যা প্রকৃত বিন্যাসের সাথে ডিল করে।
ক্লাস এবং মডিউল গঠনের সাথে সাথে জিনিসগুলি আরও স্পষ্ট হয়ে উঠল, কোনটি ছিল। এবং সবসময় সুপ্ত প্রশ্ন, কিনা বর্গ অত্যধিক করে ।
প্রতিটি শ্রেণীর কোন দায়িত্ব থাকা উচিত তা আপনি কীভাবে নির্ধারণ করবেন এবং এসআরপি প্রসঙ্গে আপনি কীভাবে কোনও দায়িত্ব সংজ্ঞায়িত করবেন?
এটি অনুসরণ করার জন্য একটি রেসিপি দেওয়া কঠিন। অবশ্যই আমি ক্রিপ্টিকটি repeat বিমূর্ততার এক স্তর repeat পুনরাবৃত্তি করতে পারি - যদি এটি সাহায্য করে তবে নিয়ম করুন।
আমার পক্ষে বেশিরভাগ ক্ষেত্রে এটি এক ধরণের "শৈল্পিক স্বজ্ঞাত" যা বর্তমান নকশার দিকে নিয়ে যায়; আমি একজন শিল্পীর মতো কোডের মডেলটি মৃত্তিকা ভাসিয়ে দেয় বা পেইন্টিং করতে পারে।
কোডিং বব রস হিসাবে আমাকে কল্পনা করুন ;)