(এই পোস্টটি কয়েক মাস আগে আমার তালিকায় পাঠানো একটির উপর ভিত্তি করে। প্রতি সপ্তাহে এটির মতো আরও পড়তে, এখানে যোগ দিন!)
আপনার প্রোগ্রামিং ফ্লো সংরক্ষণ করার জন্য সামান্য সুবিধা ব্যবহার করার ক্ষেত্রে, আমি কীভাবে সহজতম বিমূর্ততাগুলি আপনার কোডবেসকে কাজ করার জন্য আরও মজাদার করে তুলতে পারে সে সম্পর্কে কথা বলেছি৷
কিন্তু যখন আপনার খারাপ হয় তখন কী হবে বিমূর্ততা?
আপনি প্রতিবার API রেফারেন্স খনন করেন সেই পদ্ধতিটি কি স্পষ্টভাবে বুঝতে নাম দেওয়া উচিত ছিল leaderboard
আসলে বলা হয়। আপনি এটির চারপাশে রিফ্যাক্টর করার চেষ্টা করেন, কিন্তু কোডের একটি অংশ আপনাকে কাঠামোগত ডেটা দেয় এবং অন্য অংশটি আপনাকে পাঠ্যের কাঁচা লাইন দেয়। এবং যখনই আপনি কোডটি স্পর্শ করেন, কিছু ভেঙে যায় এবং আপনি এটি ডিবাগ করার চেষ্টা করে আপনার বাকি দিনগুলিকে উড়িয়ে দেন। কারণ আপনি position
টুইক করেছেন , কিন্তু score
আপডেট করেনি একই সময়ে।
তাহলে খারাপ থেকে দূরে থাকার সময় আপনি কীভাবে ভাল বিমূর্ততা তৈরি করবেন?
ক্লিয়ার কোড লিখতে ভাল রূপক ব্যবহার করা
ভাল বিমূর্ততা ভাল রূপক থেকে আসে।
একটি রূপক আপনার সিস্টেমে কিছুকে এমন একটি ধারণার সাথে সম্পর্কিত করে বর্ণনা করে যা ইতিমধ্যেই আপনার মাথায় আছে। যেমন:
-
অনেক কমান্ড লাইন পাইপ এর রূপক ব্যবহার করে .
আপনি পাইপের এক প্রান্তে ডেটা রাখেন এবং এটি অন্য প্রান্তে বেরিয়ে আসে। কল্পনা করা সহজ এবং ব্যবহার করা সহজ।
-
সমসাময়িক প্রোগ্রামিং-এ, একটি লক একটি ভাল রূপক।
লকগুলি কীভাবে অভ্যন্তরীণভাবে কাজ করে সে সম্পর্কে কিছু না জেনে, আপনি জানেন যে যখন কোনও সংস্থান লক করা হয়, আপনি এটি ব্যবহার করতে পারবেন না। এটি আনলক না হওয়া পর্যন্ত আপনাকে অপেক্ষা করতে হবে।
-
অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং-এ, মেসেজ পাসিং একটি নির্দিষ্ট মানসিক চিত্র ট্রিগার করে:একটি বস্তু অন্য বস্তুকে একটি বার্তা দেয়। দ্বিতীয় অবজেক্টটি বার্তা দিয়ে কিছু করতে পারে বা অন্য কাউকে পাঠাতে পারে।
ধারণাটি পেতে আপনার বাস্তবায়ন সম্পর্কে কিছু জানার প্রয়োজন নেই (এবং এটি প্রক্সি প্যাটার্নের মতো জিনিসগুলিকে বোঝা সহজ করে তোলে)।
একটি ভাল রূপক সমালোচনামূলক. যদি আপনি একটি ভাল রূপকের উপর ভিত্তি করে একটি বিমূর্ততা দেখতে পান, তাহলে কোডটি বোঝার জন্য আপনাকে খুব কমই ডকুমেন্টেশন পড়তে হবে বা সোর্স ডাইভিং করতে হবে। আপনি যত ভাল রূপক নিয়ে আসবেন, আপনার সিস্টেমকে অন্য কারো কাছে বর্ণনা করা তত সহজ হবে এবং পরবর্তীতে আপনার সিস্টেমে কাজ করা তত সহজ হবে।
আপনি কিভাবে ভাল রূপক নিয়ে আসেন?
একটি ভাল রূপক সুনির্দিষ্ট, স্বয়ংসম্পূর্ণ, এবং এটি বর্ণনা করা জিনিসটির একটি প্রাণবন্ত মানসিক চিত্র তৈরি করে। এটি ভুল বোঝাবুঝির জন্য জায়গা ছেড়ে দেয় না এবং এটি যতটা সম্ভব কোডের আচরণের সাথে মেলে। কেউ যদি রূপক সম্পর্কে তাদের বোঝার উপর ভিত্তি করে কোড সম্পর্কে অনুমান করে, সেই অনুমানগুলি বৈধ হওয়া উচিত।
ভাল রূপক সঙ্গে আসা কঠিন. আপনি সঠিকটি খুঁজে পাওয়ার আগে আপনি প্রায়শই কয়েকটি ফাঁস রূপকের মধ্য দিয়ে যাবেন এবং এটি ঠিক আছে! অভ্যাসের মাধ্যমে এটি সহজ হয়ে যাবে। কিন্তু এখানে একটি প্রক্রিয়া যা আমাকে সাহায্য করেছে:
কি সম্পর্কে চিন্তা করুন কীভাবে চিন্তা না করেই কিছুটা কোড করে এটা এটা করে আপনার মনে কি ইমেজ আসে? কিভাবে অন্যান্য কোড এটি ব্যবহার করে? যদি আপনি একটি বা দুই শব্দে এটি বর্ণনা করতে হয়, আপনি কোন শব্দ ব্যবহার করবেন? এটা লিখে রাখুন।
তারপর, সেই চিত্রটি সম্পর্কে চিন্তা করুন। এটা যে কোড কাজ করে কিভাবে মাপসই? রূপক মাধ্যমে ফাঁস যে প্রান্ত কেস আছে? এছাড়া কিছু আছে কি? রূপক একটি নতুন অবদানকারী তারা কোড ব্যবহার করতে পারে আগে বুঝতে হবে? আপনি যখন আপনার রূপক সম্পর্কে চিন্তা করেন, আপনি কি আপনার মনে একটি পরিষ্কার ছবি পান, নাকি এটি অস্পষ্ট?
এগুলি নির্দেশক যে আপনার রূপকটি আপনার কোডের সাথে যথেষ্টভাবে মেলে না৷ তবে আপনি একটি ভাল রূপকের যত কাছাকাছি থাকবেন, সেখানে পৌঁছতে আপনাকে তত কম লাফ দিতে হবে।
অবশেষে, একটি বাক্যে এটি ব্যবহার করুন। “এই কোডটি একটি (কিছু), কারণ..." আপনি কি প্রযুক্তিগত পটভূমি ছাড়াই কাউকে আপনার রূপক ব্যাখ্যা করতে পারেন, এবং তাদের বোঝাতে পারেন এটি কী করে? রূপকটি বুঝতে যত কম ব্যাকগ্রাউন্ড লাগবে, আপনার রূপক তত বেশি সহায়ক হবে।
আপনি যদি কাছাকাছি থাকেন, কিন্তু পুরোপুরি সেখানে না থাকেন, তাহলে একটি থিসরাস দেখুন। অনুরূপ শব্দের মধ্যে সূক্ষ্ম পার্থক্য মানে একটি ঠিক আছে রূপক এবং একটি নিখুঁত শব্দের মধ্যে পার্থক্য।
রূপক এবং OOP
অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং মূলত রূপকের উপর ভিত্তি করে। যেখানে এটি তার শক্তি পায়! ভাল-পরিকল্পিত ক্লাসগুলি শুধুমাত্র অন্যান্য ক্লাস থেকে তাদের বাস্তবায়ন লুকিয়ে রাখে না, তারা আপনার থেকে তাদের বাস্তবায়ন লুকিয়ে রাখে .
একটি দুর্দান্ত রূপক সহ, আপনি কেবল ক্লাসের নাম থেকে বলতে সক্ষম হবেন যে কীভাবে আপনার বস্তুগুলি ব্যবহার করবেন। যদি আপনার ক্লাসের নাম ভালো করা হয় এবং সেগুলি আপনার মনে সঠিক ছবি দেখা দেয়, তাহলে সেগুলি বোঝার জন্য আপনাকে তাদের বাস্তবায়নে ডুব দিতে হবে না।
তাই এখন, আমি চাই যে আপনি শেষ কোডের সাথে কাজ করা ক্লাসগুলি সম্পর্কে চিন্তা করুন। আপনি বিশেষভাবে স্পষ্ট রূপক আছে যে কোনো চিন্তা করতে পারেন? আপনি কোন ক্লাসের বিরুদ্ধে কাজ করার পরিবর্তে কাজ করেন বলে মনে করেন? সেগুলি কীভাবে ব্যবহার করবেন তা বের করতে আপনি কত ঘন ঘন সেগুলি খনন করতে যান?
৷আপনি যা খুঁজে বের করেন তা আমি শুনতে চাই। একটি মন্তব্য করুন, এবং আমাকে জানান.
দ্রুত একজন দুর্দান্ত সফ্টওয়্যার বিকাশকারী হওয়ার জন্য, আপনি যে কোডটি লিখছেন এবং আপনি যে প্রক্রিয়াগুলি অনুসরণ করছেন সে সম্পর্কে সচেতনভাবে চিন্তা করতে হবে। এবং আমি আপনাকে সাহায্য করতে পারি।
প্র্যাকটিসিং রেল এর আমার বিনামূল্যের 32-পৃষ্ঠার নমুনা ডাউনলোড করুন , এবং অভিভূত না হয়ে কীভাবে ছোট স্কেলে এই জাতীয় ধারণাগুলি চেষ্টা করতে হয় তা শিখুন৷
৷