আপনি কোডে বিমূর্ততা বোঝার সাথে কীভাবে আচরণ করবেন?


15

নতুন কোডবেসটির দিকে তাকানোর সময় আমি নীচের অংশের অ্যাপ্রোচ থেকে শুরু করতে চাই।
যেখানে আমি একটি ফাইল বুঝতে পারি এবং তারপরে পরবর্তী বিমূর্তিতে চলে যাই।
তবে প্রায়শই আমি নিজেকে নীচের স্তরের বিমূর্তনটি কী করছে তা ভুলে যেতে দেখি।

সুতরাং আমি এই স্থানে থাকব যেখানে আমি পূর্বে সম্পূর্ণরূপে বুঝতে পেরেছি এমন ফাইলগুলিতে ফিরে যাওয়ার প্রায় অন্তহীন লুপে নিজেকে খুঁজে পাই এবং তারপরে এগুলি পুনরায় জানার চেষ্টা করছি; যখন আমার মাথায় একে অপরের সাথে সংযুক্ত রয়েছে এমন অসংখ্য বিমূর্ততা জাগ্রত করার চেষ্টা করছে il

এই পরিস্থিতি মোকাবেলার জন্য আরও ভাল কৌশল আছে কি?

আমি কি কেবলমাত্র নিম্ন-স্তরের বিশদগুলি ভুলে গিয়ে তাদের প্রদত্ত হিসাবে নেওয়া উচিত? তবে তারপরেও বর্তমান বিমূর্ততা কী করছে তা বোঝার জন্য অনেক সময় নিম্ন-স্তরের বিমূর্ততা সম্পর্কে পূর্ববর্তী বোঝাপড়ার প্রয়োজন।



10
সংক্ষিপ্ত উত্তর: আপনি ভুল শেষে শুরু করছেন। একটি শীর্ষ-ডাউন পদ্ধতির সর্বদা আরও কার্যকর কারণ আপনি যে স্তরটি নেমেছেন তার প্রতিটি স্তরের সাথে আপনি বুঝতে পারবেন যে এটি কী, এর অর্থ কী। আপনি নীচে থেকে শুরু করলে আপনার প্রয়োজনীয় প্রসঙ্গের অভাব হবে। এটি মনে রাখতে অসুবিধা হয় কারণ আপনি যা দেখেন তা অর্থপূর্ণ কোনও কিছুর সাথে সম্পর্কিত করতে পারবেন না। প্রথমে বড় ছবিটি দেখুন এবং এটি বুঝতে পারার পরেই, আপনার যে অংশগুলি প্রয়োজন সেগুলি জুম করুন / এর কৌতুকপূর্ণ কৌতূহল জানতে চান।
মার্টিন মাট

আপনার মাথার সমস্ত কিছুই মনে রাখতে হবে না। অ্যাসোসিয়েশন এবং বিমূর্ততা স্মরণে রাখতে আপনাকে সাহায্য করার জন্য সাধারণ ডায়াগ্রাম আঁকতে আপনি এক টুকরো কাগজ বা আইপ্যাড ব্যবহার করতে পারেন।
sul4bh

উত্তর:


31

কংক্রিটলি প্রোগ্রামিং হ'ল বিবরণগুলি আপনার দিকে টানার প্ররোচণা যাতে আপনি এগুলি সমস্ত জায়গায় এক জায়গায় পেরেকতে পারেন। আমরা সকলেই এইভাবে শুরু করি এবং ছেড়ে দেওয়া শক্ত।

প্রোগ্রামিং বিমূর্তভাবে সুনির্দিষ্টভাবে "নিম্ন স্তরের বিবরণগুলি ভুলে যাওয়া" is কখনও কখনও এমনকি উচ্চ স্তরের বিশদ। আপনি বিশদটি দূরে সরিয়ে রাখুন এবং তাদের সাথে অন্য কোনও কিছু করতে দিন। কৌতূহলজনক বিষয় হ'ল আপনি এগুলি পাশাপাশি করছিলেন। এর মধ্যে যা ঘটেছিল তা কি আপনি সত্যিই বুঝতে পারছেন print "Hello world"এবং এটি আপনার স্ক্রিনে প্রদর্শিত হচ্ছে?

এই বিবরণগুলি ছেড়ে দেওয়ার জন্য আপনি সংগ্রাম করার কারণে এক নম্বর জিনিসটি হ'ল ভাল নাম। একটি ভাল নাম নিশ্চিত করে যে আপনি ভিতরে তাকালে আপনি অবাক হবেন না। এই কারণেই আপনি অবাক হন নি যে printআপনার স্ক্রিনে কিছু রেখেছিল এবং কীভাবে সত্যই তা চিন্তা করে না। foo "Hello world"অন্যরকম গল্প হত।

এছাড়াও, বিমূর্ততার স্তরটি সামঞ্জস্যপূর্ণ হওয়া উচিত। আপনি যদি পাই স্তরের গণনা সম্পর্কে এমন একটি স্তরে থাকেন তবে পাই কীভাবে প্রদর্শন করবেন সে সম্পর্কে আপনাকেও উদ্বিগ্ন হওয়া উচিত নয়। এই বিশদটি কোনও বিমূর্ততায় ফাঁস হয়ে গেছে যেখানে এটি সম্পর্কিত নয়।

নিম্ন, উচ্চতর বা পাশের পাশে, বিশদগুলি, যেগুলি আমি এই এক জায়গায় নিয়ে ভাবছি সে সম্পর্কে নয়, হয় পুরোপুরি চলে যেতে পারে বা কমপক্ষে কোনও ভাল নামের আড়ালে থাকতে পারে।

সুতরাং আপনি যদি সত্যিই ফাইল থেকে ফাইলের মধ্যে ঝাঁকুনির লড়াই করছেন তবে আমি প্রতিক্রিয়া জানাব যে কেউ আপনাকে খারাপ নাম বা ফাঁসযুক্ত বিমূর্ততা দিয়ে আটকে দিয়েছে।

আমি আমার আঙ্গুল দিয়ে পড়ে এটি ঠিক করেছি। একবার এই গণ্ডগোলের চারপাশে আমার শালীন পরীক্ষা করার পরে আমি দায়িত্বগুলি ছিঁড়ে ফেলি, তাদেরকে এমন পরিষ্কার নাম দিন যা আশ্চর্যতা এড়ায় এবং এটি অন্য কাউকে দেখায় যে আমি কোনও কল্পনার জগতে বাস করছি না তা নিশ্চিত করার জন্য।

এইভাবে কাজ করার ক্ষেত্রে দৃশ্যত আমি একা নই:

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

মাইকেল পালক - কমলা কোড


12

নীচের অংশে, কিছু প্রতি বছর বা ততোধিক মাসের জন্য আমার পক্ষে এটি কীভাবে ঘটেছিল সে সম্পর্কে কিছু আপডেট রয়েছে, আমি মনে করি তারা মূল্যবান।

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

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

যদি আপনি কিছুটা বিতর্ক করতে আগ্রহী হন যে আমার মূল ক্ষেত্রের লোকেরা এবং আমাকেও সত্য হতে পারে তবে আপনি যদি এখানে লিখিত কথাটি শোনেন তবে আপনি উভয়ই এই উত্তরটির সাথে একমত হতে এবং অসম্মতি জানাতে শিখবেন , এগিয়ে পড়ুন:


তবে এখানে আরও একটি সমস্যা রয়েছে - পিউরিস্টস। আপনি ভাল কথার উত্তর এবং মতাদতগুলি শুনবেন যা যুক্তিসঙ্গত এবং সম্পূর্ণ যুক্তিযুক্ত, বাস্তবে, এগুলিতে কোনও ভুল নেই। তবে আপনাকে সেগুলি অনুসরণ করতে হবে না, আসলে তারা আপনার অসুবিধায় চলেছে into

আমার বন্ধুরা বড় ব্যবস্থাগুলির সাথে কাজ করেছিল এবং তারা কেবলমাত্র লোকদের হাসিখুশি করে যারা কনভেনশন এবং নিদর্শন সম্পর্কে খুব বেশি যত্ন করে এবং ভাল কারণের জন্য, আমি এটিও করতাম - আমি ডেটা বিশ্লেষণের আমার মূল ক্ষেত্র থেকে এটির জন্য আমার যুক্তি খুঁজে পেতে পারি, যেহেতু আমি এমন অভিজ্ঞ বিকাশকারী নই: আপনি যে জিনিসটিকে গুরুত্বপূর্ণ মনে করেন তার বেশিরভাগ ক্ষেত্রেই কিছু আসে যায় না এবং এই অর্থে আপনার অহংকারের সাথে একটি দৃ corre় সম্পর্ক রয়েছে।প্রায়শই কোনও ব্যক্তি, তার অহংকারের কারণে, এমন জ্ঞান অর্জন করতে পারেন যে তার পক্ষপাতদুষ্টতার কারণে তিনি সম্ভবত ভুল বুঝেছিলেন যা এখন কর্তৃপক্ষের দ্বারা পুনরায় জোর করা হয়েছে যা তিনি মনে করেন কেবল "আমি একই কাজ করেছি" বলেছিল। এটি একটি খুব সুপরিচিত ফাঁদ যা আপনার কখনই পড়ে না। এর অর্থ এই নয় যে তিনি এটিকে সঠিকভাবে বা বৃহত্তর ভালোর জন্য ব্যবহার করছেন না, তবে প্রায়শই এই লোকেরা কী করবে তা প্রতিশ্রুতি দেয় যে তারা যা বলছে তা সোনার পুরস্কার।

তো তুমি কি করতে পার?

আপনার কোডটি কোনও সহকর্মীর কাছে ব্যাখ্যা করুন এবং উচ্চ-স্তরের দৃষ্টিকোণ থেকে এটি কোনও অর্থবোধ করে কিনা তা তাদের জিজ্ঞাসা করুন।

যে বিষয়ে যে সব. অবশ্যই যে কেউ অন্যের কোড পড়ছে তার কাছে নির্দিষ্ট কিছু বিষয় বাস্তবায়ন দেখার জন্য সর্বদা একটি ওয়েল-ট্যাব ফিয়াস্টা থাকবে তবে এতে কিছু আসে যায় না, যদি কেউ আপনার কোডটি পড়ছে আপনার সিস্টেমের উচ্চ-স্তরের বোঝা আছে এবং "কেন ঘটনা ঘটে তাই বুঝতে পারে" "(আবারও প্রয়োজনীয়ভাবে না জেনে, পুরোপুরি" তারা কীভাবে ঘটে "), তবে আপনি সোনার।

এটি আমার বলার অপেক্ষা রাখে না যে এগিয়ে যান এবং ক্রেপ কোডটি লিখুন যা পারফর্মেন্ট নয় বা কোনও কিছুকে সম্মান করে না, তবে আমি যা বলছি তা হ'ল:

1) ভুলে যাওয়া ঠিক আছে। সময় মতো, আপনি যে কোডটির সাথে কাজ করছেন সেগুলি পড়ার ক্ষেত্রে আপনি আরও উন্নত হবেন। আপনি যে কোডটি পড়ছেন তা যদি আপনি নিম্ন স্তরের বাস্তবায়নগুলি একটি ভাল স্তরে জানতে চান তবে তার কোডটি খারাপভাবে লেখা হয়েছে এবং এটি আগে যা বলেছিলাম তাতে অভিনয় করে: কোন সহকর্মী আপনাকে বোঝে?

2) দুনিয়া এমন অনেক বুদ্ধিমান লোকের সাথে ভরপুর যারা খুব স্মার্ট নয়। এগুলি প্রায়শই খুব আবেগযুক্ত হয় এবং তারা বাইরের বাহিনী থেকে পক্ষপাতিত্ব-প্রেরণার ঝুঁকিতে থাকে। তারা যা করে তা তারা খুব ভাল, তবে তারা কীভাবে তথ্য ছড়িয়ে দেওয়ার অভিনেতাদের ভুলে যায় তা হ'ল: ধারণা / তথ্য, এমনকি "যুক্তি" দ্বারা সমর্থন করলেও তাদের প্রেরণের প্রসঙ্গ রয়েছে, যা তা বোঝার ক্ষেত্রে গুরুত্বপূর্ণ বা না তথ্য আপনার জন্য দরকারী। আপনার জন্য কী বোঝায় তা অন্যের জন্য উপলব্ধি করতে পারে এবং তারা এটি পছন্দ করতে পারে তবে তথ্যটিকে নিরঙ্কুশ হিসাবে গ্রহণ করা উচিত নয় এবং একটিকে আবার বিবেচনা করা উচিত, বা কমপক্ষে কোথা থেকে এসেছে তা প্রসঙ্গে বের করার চেষ্টা করতে হবে এবং তার বিরুদ্ধে তদন্ত করতে হবে এটি মেলে কিনা তা দেখতে নিজের প্রসঙ্গে। এটি সত্যই একই ধরণের কোটিপতি যা আমাদের এই "জ্ঞানের বিটগুলি এগিয়ে যাওয়ার"

সংক্ষেপে: কোডটি লিখুন এটি বোধগম্য এবং উপলব্ধি করুন যে এটি এখনও বিতর্কযোগ্য যেখানে আমাদের প্রয়োজন হিসাবে অনেকগুলি নিদর্শন / শ্রেণি এবং শোধনাগার প্রয়োজন some তর্কটির উভয় পক্ষেই খুব স্মার্ট লোক রয়েছে এবং এটি কেবল আপনার দলের পক্ষে যুক্তিসঙ্গতভাবে কাজ করার ধারণাটিই জোরদার করা উচিত - ছোট ছোট বিবরণে আটকে যাবেন না, আপনি এগুলি খুঁজে বের করবেন you'll পরে, মনে রাখবেন, আপনি একটি অত্যন্ত প্রতিযোগিতামূলক বিশ্বে বাস করেন যেখানে সময়টাই সর্বাধিক গুরুত্বপূর্ণ বিষয়:

শুরুর সাফল্যের সময়।

আপনার সময় এবং সংস্থানকে অর্থবহ, লোভী উপায়ে বরাদ্দ করুন।


6 মাস পরে এখানে একটি সম্পাদনা রয়েছে:

এটি একটি উন্মাদ যাত্রা ছিল। আমি কখনও ভাবিনি যে কেবল বিচ্ছেদ / ভাল নামকরণ এবং ডকুমেন্টেশন মূলত আপনাকে আপনার কোডবেস এর বাইরে এবং বাইরে কোনও কিছু প্লাগ করার অনুমতি দিতে পারে। নতুন পরিবর্তনগুলির সাথে এটির গতি বাড়ানোর জন্য আমাকে প্রচুর কোডটি আবার লিখতে হয়েছিল এবং আমি 2-3 দিনের মধ্যে এটির একটি ভাল অংশ তৈরি করেছিলাম। আমি নিরাপদে বলতে পারি যে জ্ঞানের অভাবে বা সর্বোত্তম অনুশীলনের কারণে আমি সর্বত্র সলিডকে অনুসরণ করি নি এবং আমি বলতে পারি যে তারা আমার প্রযুক্তিগত debtণে আছেন তবে অনেকটা নয়। আলাদা করুন, ভাল নাম এবং দস্তাবেজ করুন, যখন আপনি শেষ পর্যন্ত আপনি কতটা বোবা ছিলেন তা বুঝতে পেরে আপনি কোনও সময় পরিবর্তন করতে পারবেন না।

আমাকে ভুল বুঝবেন না: আপনি যদি নিজের কোডটি দৃly়ভাবে মিশ্রিত করে লিখেন তবে আপনি প্রচন্ড ব্যথার মধ্যে পড়বেন, আপনি সলিডকে ঘৃণা করেন না, এমনকি একটি বেস স্তরে এটি বোঝার এবং প্রয়োগ করা দুর্দান্ত সত্যকে হ্রাস করার অনুমতি দেয় যা সত্য, সত্য ওওপি সত্যই যে সাহায্য করে। ওওপি কোড পুনরায় ব্যবহার সম্পর্কেও ছিল বলে মনে করা হয়েছিল এবং এখানে এবং সেখানে ঘটেছিলআপনি নিজের তৈরি অনেকগুলি বস্তু পুনরায় ব্যবহার করতে পারবেন না, সুতরাং আপনার সিস্টেমটি ভালভাবে বিচ্ছিন্ন হয়েছে কিনা তা নিশ্চিত করার দিকে মনোনিবেশ করুন। একবার আপনি পরিপক্কতায় পৌঁছে যান এবং আসুন অনুমান করুন আঙ্কেল বব এসে আপনার প্রকল্পের নেতৃত্ব নেবেন, তিনি বলবেন "ঠিক আছে, এটি নরক হিসাবে মূক তবে কমপক্ষে সবকিছু আলাদা করা হয়েছে, ভাল নামকরণ হয়েছে এবং নথিভুক্ত করা হয়েছে তবে কমপক্ষে আমি জানি এগুলি সম্পর্কে কি " (আমি আশা করি). আমার জন্য, এটি কাজ করে। আমার এলওসি অবিচ্ছিন্নভাবে পরিবর্তিত হয়, তবে লেখার সময় এটি কোডের ১১০ কিল লাইনের লাইন, পারফর্মিং কোডের ১১০ কে লাইন যা একক ব্যক্তির সাথে তাল মিলিয়ে কাজ করে তা অনেক বেশি।


3 মাস পরে 8 মাসের কোডে আমি এখানে একটি সম্পাদনা করছি যা আমি রিফ্যাক্টর করছি:

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


ভাল নামকরণ। সবচেয়ে গুরুত্বপূর্ণ বিষয়। বেশিরভাগ মানুষের জন্য করা সহজ এবং এটি বিষয়গুলি এত সহজ করে তোলে।
gnasher729
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.