আপনি কীভাবে বড় কোড বেসগুলিতে ডুব দেবেন?


145

কোন অজানা কোড বেসটি অনুসন্ধান এবং শেখার জন্য আপনি কোন সরঞ্জামগুলি এবং কৌশলগুলি ব্যবহার করেন?

আমি মত সরঞ্জাম কথা ভাবছি grep, ctags, ইউনিট-পরীক্ষা কার্মিক পরীক্ষা, ক্লাস-ডায়াগ্রাম জেনারেটর, গ্রাফ কল, মত কোড মেট্রিক্স sloccount, ইত্যাদি। আমি আপনার অভিজ্ঞতাগুলিতে আগ্রহী, আপনি নিজেরাই যে সাহায্যকারী ব্যবহার করেছেন বা লিখেছেন এবং যে কোড কোডটির সাথে আপনি কাজ করেছেন তার আকার

আমি বুঝতে পারি যে একটি কোড বেসের সাথে পরিচিত হওয়া একটি প্রক্রিয়া যা সময়ের সাথে সাথে ঘটে এবং পরিচিতির অর্থ "আমি কোডের সংক্ষিপ্তকরণ করতে সক্ষম" থেকে "আমি রিফ্যাক্টর করতে পারি এবং এটি 30% আকারে সঙ্কুচিত করতে পারি" এর অর্থ হতে পারে। তবে কীভাবে শুরু করবেন?


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

উত্তর:


55

আমি সবসময় যা করেছি তা নিম্নলিখিত:

আমার সম্পাদকের একাধিক অনুলিপি খুলুন (ভিজ্যুয়াল স্টুডিও / এক্সলিপস / যাই হোক না কেন) এবং তারপরে কোডটি দিয়ে ডিবাগ করুন এবং লাইন ব্রেক স্টেপ করুন। কোডের প্রবাহটি সন্ধান করুন, মূল পয়েন্টগুলি কোথায় এবং সেখান থেকে কী কী তা দেখতে সন্ধানের মাধ্যমে স্ট্যাক করুন।

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


3
হ্যাঁ, একটি বোতামে ব্রেক ব্রেকপয়েন্ট সেট করুন যা যুক্তির একটি গুরুত্বপূর্ণ অংশটি চালু করেছে এবং তার মধ্য দিয়ে যেতে পারে। আমি সবসময়ই তাই করি।
জোয়ারি সেব্রেচটস

1
+1 হ্যাঁ, আমিও তাই করি তবে কাজটি সহজ করার কোনও উপায় আমি জানি না। আমার অভিজ্ঞতায়, কোনও পরিবর্তন করা নিরাপদ বোধ করার কয়েক সপ্তাহ আগে এবং কোডে "বাড়িতে" থাকাকালীন কয়েক মাস সময় নিতে পারে। আপনি বিকাশকারীদের প্রশ্ন জিজ্ঞাসা করতে পারলে এটি অবশ্যই সহায়তা করে।
মাইক ডুনলাভে

1
উপরন্তু: আমি সাধারণত একটি বৈশিষ্ট্য দ্বারা শুরু। বলুন আমি জানতে চাই কীভাবে এটি ইমেলগুলি পাঠায়? সুতরাং আমি সেখানে "সেন্ডইমেল", ব্রেকআপপয়েন্ট এবং তারপরে বর্ণিত হিসাবে করব। তারপরে আপনি কিছু যাদুবিদ্যার উপাদান আবিষ্কার করেছেন যা কিছু করে, এবং
এটিতে

1
+1, তবে কখনও কখনও ব্রেকপয়েন্টগুলি সেটআপ করার আগে, ফাংশন কলকে হায়ারার্কি দেখতে প্রায় সমস্ত ফাংশনের প্রথম লাইনে মুদ্রণ ফাংশন যুক্ত করি।
মিঃ মিঃ

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

64

কিভাবে আপনি একটি হাতি খাবেন?

একবারে একটি কামড় :)

সিরিয়াসলি, আমি প্রথমে কোডটির লেখকদের সাথে কথা বলার চেষ্টা করি।


116
আপনি কিভাবে একটি হাতি কোড করবেন? এক সময় এক বাইট!
ম্যাসন হুইলারের

7
যোগাযোগের শক্তি প্রায়শই অবমূল্যায়ন করা হয়
পোজাইড

17
+1 একজন মানুষের জিজ্ঞাসা করার জন্য। এবং বোকা শব্দ বলতে ভয় পাবেন না। কোড সম্পর্কে আপনার করা প্রতিটি অনুমান তাদের বলুন এবং এটি কীভাবে কাজ করে এবং এটি কী করে সে সম্পর্কে আপনার প্রতিটি সিদ্ধান্তে এসে পৌঁছেছে। তারা আপনাকে জানিয়ে দেবে যে আপনি ভুল। আপনার অহংকারের এই ক্ষুদ্র আঘাতটি আপনাকে দীর্ঘসময় ধরে এত ঘন্টা বাঁচাতে পারে যে আপনার সহকর্মীরা আপনাকে নিকটতম দেবতা হিসাবে বিবেচনা করতে পারে।
পিটারআলেন ওয়েবেব

এটি অবশ্যই ধরে নেয় যে কোডটির লেখক উপলব্ধ।
এরিক রবার্টসন

1
@ এরিকরবার্টসন ... এবং সে কোনও গিরি নয়।
স্মিভিকিপিডিয়া

39

আমি কাজটি না করা পর্যন্ত আমাকে কি হ্যাক করতে হবে?

অনেকাংশে হ্যাঁ (দুঃখিত)।

আপনি বিবেচনা করতে পারেন পদ্ধতির:

  1. ব্যবসায়ের দিক থেকে কোডটি কী করণীয় তা অনুধাবনের চেষ্টা করুন।
  2. এটি যতই খারাপ হোক না কেন, সমস্ত ডকুমেন্টেশন পড়ুন।
  3. কোড সম্পর্কে কিছু জানেন এমন যে কারও সাথে কথা বলুন ।
  4. ডিবাগারে কোডের মাধ্যমে পদক্ষেপ নিন।
  5. ছোট ছোট পরিবর্তনগুলি পরিচয় করিয়ে দিন এবং কী ভাঙছে তা দেখুন।
  6. কোডটি আরও পরিষ্কার করার জন্য ছোট ছোট পরিবর্তনগুলি করুন।

কোড পরিষ্কার করার জন্য আমি কিছু করি:

  1. কোডটি সুন্দরভাবে বিন্যাস করতে একটি কোড প্রিটিফায়ার চালান।
  2. আমি মনে করি এটি কী করতে পারে তা ব্যাখ্যা করতে মন্তব্য যুক্ত করুন
  3. পরিবর্তনশীল নামগুলি তাদের পরিষ্কার করার জন্য পরিবর্তন করুন (রিফ্যাক্টরিং সরঞ্জাম ব্যবহার করে)
  4. এমন একটি সরঞ্জাম ব্যবহার করা যা নির্দিষ্ট চিহ্নের সমস্ত ব্যবহার হাইলাইট করে
  5. কোডে বিশৃঙ্খলা হ্রাস - কোড মন্তব্য করা, অর্থহীন মন্তব্য, অর্থহীন ভেরিয়েবল প্রারম্ভিককরণ এবং আরও অনেক কিছু।
  6. বর্তমান কোড কনভেনশনগুলি ব্যবহার করার জন্য কোডটি পরিবর্তন করুন (আবার রিফ্যাক্টরিং সরঞ্জামগুলি ব্যবহার করে)
  7. অর্থপূর্ণ রুটিনগুলিতে কার্যকারিতা নিষ্কাশন করা শুরু করুন
  8. যেখানে সম্ভব পরীক্ষাগুলি যুক্ত করা শুরু করুন (প্রায়শই সম্ভব নয়)
  9. যাদুর সংখ্যাগুলি থেকে মুক্তি পান
  10. যেখানে সম্ভব সেখানে সদৃশ হ্রাস করা

... এবং অন্য যে কোনও সাধারণ উন্নতি আপনি করতে পারেন।

ধীরে ধীরে, এর পেছনের অর্থটি আরও পরিষ্কার হওয়া উচিত।

জায়গা শুরু করার জন্য? আপনি যা জানেন তা দিয়ে শুরু করুন। আমি ইনপুট এবং আউটপুট প্রস্তাব। এগুলি কী বলে মনে করা হয় এবং সেগুলির জন্য কী ব্যবহৃত হয় সে সম্পর্কে আপনি প্রায়শই একটি হ্যান্ডেল পেতে পারেন। অ্যাপ্লিকেশনটির মাধ্যমে ডেটা অনুসরণ করুন এবং দেখুন এটি কোথায় যায় এবং এটি কীভাবে পরিবর্তিত হয়।

আমার এই সমস্ত সমস্যাগুলির মধ্যে একটি হ'ল অনুপ্রেরণা - এটি একটি সত্যই স্লোগান হতে পারে। এটি আমাকে পুরো ব্যবসাকে ধাঁধা হিসাবে ভাবতে এবং যে অগ্রগতিটি করছি তা উদযাপন করতে সহায়তা করে, যতই ছোট হোক না কেন।


2
আমি এটিতে কিছুটা যুক্ত করব - "হ্যাকিং" এর শর্তে - এখন আপনার যে সমস্যাগুলি রয়েছে সেগুলি সমাধান করে শুরু করুন অর্থাৎ যে বিকাশ প্রয়োজন তা করা, আপনার যা যা বোঝার দরকার তা হ'ল সেই পরিবর্তনগুলি কীভাবে করা যায়। আপনি কোডের স্টাইলটি সম্পর্কে শিখেছেন এবং আপনি এটির কিছুটা সম্পর্কে শিখছেন তা শেখার ক্ষেত্রে। গুরুত্বপূর্ণ হিসাবে এটি আপনাকে একটি ফোকাস দেয় - এই বৈশিষ্ট্যটি যুক্ত করতে বা সেই কার্যকারিতা বা যা কিছু পরিবর্তন করতে। তারপরে, আপনি পরিবর্তনটি করার সাথে সাথে আপনি রিফ্যাক্টরিং পদক্ষেপ নিতে পারেন (বর্ণিত হিসাবে)
মার্ফ

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

ফোকাসটি উল্লেখ করার জন্য @ মারফ +1। জটিল কোডবেস নিয়ে কাজ করার সময় আপনার ফোকাসটি কী তা মনে রাখা খুব জরুরি। এবং হ্যাঁ, শৈলীতে উত্সাহী হওয়া যেমন গুরুত্বপূর্ণ তেমনি।
স্মিভিকিপিডিয়া

32

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

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

এর পরে, আমি মনে করি আপনার প্রস্তাবিত পদ্ধতি অবশ্যই একটি ভাল পদক্ষেপ। কোডটির উদ্দেশ্য কী তা আপনাকে প্রথমে একটি উচ্চ স্তরে বুঝতে হবে।

আপনার যদি প্রশ্নের উত্তর পেতে হয় তবে অবশ্যই কোনও পরামর্শদাতা বা দলের সাথে কারও সাথে কাজ করুন।

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


13

আমার যখন খুব বড় উত্স ফাইল হয় তখন আমি নিম্নলিখিতগুলি করতে পছন্দ করি:

  • ক্লিপবোর্ডে পুরো মেসটি অনুলিপি করুন
  • ওয়ার্ড / টেক্সটমেটে যাই যা কিছু আটকান
  • নূন্যতম ফন্টের আকার হ্রাস করুন।
  • কোডের নিদর্শনগুলি দেখে নীচে স্ক্রোল করুন

আপনি যখন আপনার সাধারণ সম্পাদকের কাছে ফিরে আসেন তখন কোডটি কীভাবে অদ্ভুতভাবে পরিচিত তা দেখে আপনি অবাক হয়ে যাবেন।


এটি ২০১১ সাল থেকে আরও সাধারণ হয়ে উঠতে শুরু করেছে এবং এগুলি এখন বেশ কয়েকটি পদ্ধতির / সরঞ্জামগুলি (আমি এখনই তাদের সন্ধান করতে পারলাম তবে আমি জানি তারা বিদ্যমান) যা ভিজ্যুয়াল ইম্প্রেশন দেওয়ার জন্য কোডে এই উচ্চ স্তরের রূপরেখা এবং বিভিন্ন বিষয় সরবরাহ করতে পারে কোডটির উদাহরণস্বরূপ, ক্লাসে প্রতি লাইনের সংখ্যা, প্রতিটি লাইনের দৈর্ঘ্য, পদ্ধতি অনুসারে প্যারামারটারের গড় সংখ্যা ইত্যাদি These এই সরঞ্জামগুলি এখন কয়েকশ বিকাশকারী এবং কয়েক মিলিয়ন কোডের কোডের পরিচালকরা ব্যবহার করছেন।
জঙ্কি

সাব্লাইম পাঠ্যের একটি 'মিনিম্যাপ' রয়েছে যা একই উদ্দেশ্যে ব্যবহার করা যেতে পারে।
কেএমও

12

এটি সময় নেয়

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

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

"আপনি কেন এই অংশটি এইভাবে করলেন"

"আমি লক্ষ্য করেছি যে অনলাইনে বেশিরভাগ লোকেরা এটি করছে এবং আপনি সকলেই এটি অন্যভাবে করেছেন this কেন এটি?"

"কী আপনার সকলকে প্রযুক্তি ওভার প্রযুক্তির এক্সকে বেছে নিয়েছে?"

এই প্রশ্নের উত্তরগুলি আপনাকে প্রকল্পের ইতিহাস এবং নকশা এবং বাস্তবায়নের সিদ্ধান্তের পিছনে যুক্তি বুঝতে সহায়তা করবে।

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


9

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

সি এবং সি ++ কোড কাউন্টার - সিসিসিসি এইচটিএমএল ফর্ম্যাটে কোড মেট্রিক তৈরি করতে পারে। আমি এলওসি পাওয়ার জন্য ডাব্লুসিও ব্যবহার করেছি।

ডক্সিজেন এইচটিএমএলে সিনট্যাক্স হাইলাইটেড এবং ক্রস রেফারেন্স কোড তৈরি করতে পারে। বৃহত কোড বেস ব্রাউজিংয়ে দরকারী।


8

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


6

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

এখানে চিত্র বর্ণনা লিখুন


6
এমন অনেকগুলি সরঞ্জাম রয়েছে যা একরকম শ্রেণিবিন্যাসের সাথে পঠনযোগ্য নির্ভরশীলতা গ্রাফ তৈরি করতে পারে তবে এগুলির একটির মতো বলে মনে হয় না। আমি ইলেক্ট্রনিক ডিজাইনের সাথেও কাজ করি এবং এর জন্য থাম্বের একটি নিয়ম রয়েছে (আক্ষরিকভাবে): যদি আমাকে কোনও আঙ্গুলের সাথে আপনার স্কিম্যাটিক কোনও লাইন অনুসরণ করতে হয় তবে এটি একটি খারাপ পরিকল্পনাকারী।

5

আমার একবার একবার একটি চমত্কার চমত্কার সফটওয়্যার ইঞ্জিনিয়ার আমাকে জানিয়েছিল যে কোড বিশ্লেষণ এবং রক্ষণাবেক্ষণের সবচেয়ে ব্যয়বহুল ফর্মটি ছিল কোডের মধ্য দিয়ে, লাইনে লাইনে চলতে; অবশ্যই, আমরা প্রোগ্রামাররা, এবং এটি বেশ কিছুটা কাজের সাথে আসে। আমি মনে করি, সুখী মাধ্যমটি হ'ল (এই ক্রমে): ১. আপনি কীভাবে কোডটি কাজ করবেন তা নোট তৈরি করার জন্য একটি নোটবুক পান এবং সময়ের সাথে সাথে এটি যুক্ত করুন the কোড 3 সম্পর্কে ডকুমেন্টেশন পড়ুন। লেখক বা অন্যদের সাথে কথা বলুন যারা কোড বেসকে সমর্থন করেছেন। তাদের "ব্রেইন ডাম্প" জিজ্ঞাসা করুন 4.. আপনি যদি এমন বিন্দুতে পৌঁছে যান যেখানে আপনি কিছু বিশদ-স্তরের শ্রেণীর সম্পর্ক বুঝতে পারেন তবে কোডটি কীভাবে কাজ করে এবং কীভাবে ভেবেছিল তার মধ্যে কিছু সংশ্লেষণ করার জন্য কোডটির কিছু ধাপে ডিবাগিং করুন and কোডটি আসলে কীভাবে কাজ করে।


5

প্রথমে বোঝা যাচ্ছে এটি করার অর্থ কী - তা ছাড়া এটি জঘন্য হতে পারে। ব্যবহারকারীদের সাথে কথা বলুন, ম্যানুয়ালটি যা যা কিছু পড়ুন।

তারপরে রান হিট করুন এবং কীগুলি মূল কী বলে মনে হচ্ছে তার জন্য কোডটি হাঁটা শুরু করুন।


3

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

যদি প্রকল্পটির ইউনিট পরীক্ষা করা হয়, তবে আমি তাদের মধ্য দিয়ে যেতে চাই, তারা সর্বদা খুব প্রকাশক এবং আলোকিত হয়।


3
  1. সমস্ত পরীক্ষা চালান, যদি আপনার কোনও থাকে এবং দেখুন কোন কোডটি আচ্ছাদিত এবং কোনটি নয়।
  2. আপনার যে কোডটি পরিবর্তন করতে হবে তা যদি আচ্ছাদিত না হয় তবে এটি আবরণ করার জন্য পরীক্ষাগুলি লেখার চেষ্টা করুন।
  3. কোড পরিবর্তন করুন। পরীক্ষাগুলি ভাঙবেন না।

লিগ্যাসি কোডের সাথে মাইকেল পালকের কার্যকরভাবে কাজ করা দেখুন


3

এখানে আমার সংক্ষিপ্ত তালিকা:

  1. যদি সম্ভব হয় তবে কাউকে কোডের একটি উচ্চ-স্তরের মতামত দেওয়ার জন্য বলুন। কোন নিদর্শনগুলি বিবেচনা করা হত, আমি কী ধরণের সম্মেলনগুলি দেখতে পাচ্ছিলাম ইত্যাদি This আমি প্রাক বিদ্যমান বিদ্যমান পিঁয়াজ মাধ্যমে কাজ হিসাবে জিজ্ঞাসা।

  2. কোডটি চালান এবং দেখুন সিস্টেম (গুলি) কেমন লাগে। অনুমোদিত এটিতে কয়েকটি বাগের বেশি থাকতে পারে তবে এটি কী করে তা ধারণা পেতে এটি কার্যকর হতে পারে। এটি কোড পরিবর্তন করার বিষয়ে নয়, বরং এটি কীভাবে চলে তা কেবল দেখার জন্য। সামগ্রিকভাবে সিস্টেম হতে বিভিন্ন টুকরা কীভাবে একসাথে ফিট হয়?

  3. কোডের অভ্যন্তরীণ মানসিক মডেল তৈরিতে সহায়তা করতে পারে এমন মৌলিক ডকুমেন্টেশনের পরীক্ষা এবং অন্যান্য সূচকগুলির সন্ধান করুন। এখানে খুব সম্ভবত খুব কম ডকুমেন্টেশন এবং পরীক্ষা না থাকলে আমি সম্ভবত কমপক্ষে কয়েক দিন প্রস্তাব দেব।

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

শেষ কিন্তু অন্তত নয়: নিম্নলিখিত সময়ে প্রতিটি প্রত্যাশায় আপনার কী করা উচিত বলে বিবেচনা করা হচ্ছে, সেই প্রকল্পটি যারা চালাচ্ছেন তাদের প্রত্যাশাগুলি জেনে নিন:

  • আপনি নতুন বৈশিষ্ট্য স্থাপন করা হয়?
  • আপনি কি বাগগুলি ঠিক করছেন?
  • আপনি কি কোডটি রিফ্যাক্টর করছেন? মানগুলি কি আপনার কাছে নতুন বা সেগুলি খুব পরিচিত?
  • আপনি কি কেবল কোড বেসের সাথে নিজেকে পরিচিত করার কথা?

2

আমি সবসময় চেষ্টা করি এবং প্রোগ্রামটিতে প্রবেশের পয়েন্টটি দিয়ে শুরু করি, যেহেতু সমস্ত প্রোগ্রামের একটি থাকে (যেমন, মেইন মেথড, মেন ক্লাস, ইন, ইত্যাদি)। এরপরে এটি আমাকে কী শুরু হবে এবং কখনও কখনও কীভাবে জিনিসগুলি লিঙ্কযুক্ত তা নির্দেশ করবে।

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

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

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


2

আমি ডকুমেন্টেশন ইত্যাদি দিয়ে শুরু করার জন্য বলব, তবে আমার অভিজ্ঞতার সাথে ডকুমেন্টেশন এবং স্থানীয় জ্ঞানের গভীরতা একটি সিস্টেমের বয়স, আকার এবং জটিলতার সাথে প্রায়শই বিপরীতভাবে সমানুপাতিক হয়।

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

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


2

আমি অনেক কিছু করেছি ...

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

  1. লক্ষ্যগুলি পান, সেই ব্যবস্থার সমাধান করা উচিত (যদি তারা না লিখে থাকে) - লিখুন। ম্যানেজার, অন্যান্য কর্মচারী, এমনকি যদি প্রাক্তন তারা উপলব্ধ থাকে তা জিজ্ঞাসা করুন। গ্রাহককে জিজ্ঞাসা করুন বা কোনও ডকুমেন্টেশনের সন্ধান করুন।
  2. নির্দিষ্টকরণ পান। এটি উপস্থিত না থাকলে - এটি লিখুন। এটির জন্য কারও কাছে জিজ্ঞাসা করা উচিত নয়, যেমন এটির অস্তিত্ব নেই, তবে অন্যরা যখন খুব বেশি যত্ন নেয় না তখন আপনি এমন পরিস্থিতিতে থাকেন। সুতরাং নিজস্ব লেখার একমাত্র উপায় (পরে এটি এটিকে উল্লেখ করা আরও সহজ হবে)।
  3. নকশা পান। অস্তিত্ব নেই - এটি লিখুন। যতটা সম্ভব নথি এবং উত্স কোড উল্লেখ করার চেষ্টা করুন।
  4. আপনার পরিবর্তন করতে হবে এমন অংশে বিস্তারিত নকশা লিখুন।
  5. আপনি এটি কীভাবে পরীক্ষা করেন তা নির্ধারণ করুন। সুতরাং আপনি নিশ্চিত হতে পারেন যে পুরানো এবং নতুন কোড একইভাবে কাজ করে।
  6. সিস্টেমকে এক ধাপে তৈরি করতে সক্ষম করুন। এবং পুরানো কোড দিয়ে পরীক্ষা। যদি এটি ইতিমধ্যে না থাকে তবে এটি এসভিসিতে রাখুন।
  7. পরিবর্তনগুলি প্রয়োগ করুন। আগে নয়।
  8. এক মাস বা তার পরে যাচাই করুন, যাতে কোনও কিছু ভেঙে যায় না।

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

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

PS: আমি একটি কোড মনে করি যা বিভিন্ন সেটিংস সহ 5 টি ক্লায়েন্টের জন্য ব্যবহৃত হয়েছিল। এবং প্রতিটি পরিবর্তনের (নতুন বৈশিষ্ট্য) "কী কী অংশগুলি ব্যবহৃত হয়" এবং "কোন কনফিগারেশন ক্লায়েন্টদের" তাই কোনও কিছু ব্রেক না করার জন্য, এবং কপিপাস্ট কোডটি না করার জন্য চিন্তাভাবনা করা দরকার। প্রজেক্টের সিভিগুলিতে তাদের সেটিংস স্থাপন এবং চশমা লেখার ফলে এই চিন্তাভাবনার সময়টি প্রায় 0-এ হ্রাস পায়।


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

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

2

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

প্রোগ্রামটির প্রয়োগের শুরু থেকে শুরু করে এটি আবিষ্কার করুন। যদি আপনাকে কোড বেসের একটি নির্দিষ্ট অংশে বরাদ্দ করা হয় তবে সেই অংশের মধ্যে সম্পাদনটি সনাক্ত করুন এবং কোন ডেটা স্ট্রাকচার ব্যবহার করা হচ্ছে তা নির্ধারণ করুন।

আপনি যদি কোনও অবজেক্ট-ভিত্তিক ভাষা ব্যবহার করছেন তবে সাধারণ শ্রেণির চিত্রটি তৈরি করার চেষ্টা করুন। এটি আপনাকে একটি ভাল উচ্চ-স্তরের ওভারভিউ দেবে।

দুর্ভাগ্যক্রমে, শেষ পর্যন্ত, আপনাকে যতটা সম্ভব কোড পড়তে হবে। আপনি যদি ভাগ্যবান হন তবে পূর্ববর্তী প্রোগ্রামাররা কী ঘটছে তা বুঝতে সহায়তা করার জন্য যথাসম্ভব ডকুমেন্টেশন লিখেছেন।


2

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

আমি দেখতে পেয়েছি যে কোড শিখার বাইরে লক্ষ্য ছাড়াই কোডটিতে ঝাঁপিয়ে পড়ার চেষ্টা করা সাধারণত অনুপযুক্ত, নিজেকে ছোট পরিবর্তন করার চেষ্টা করা বা অন্যের পরিবর্তনের কোড পর্যালোচনা করা আপনার সময়ের অনেক বেশি উত্পাদনশীল ব্যবহার।


2

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

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

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

ছোট পদক্ষেপ নিন, এমনকি ক্ষুদ্রতম কোড পরিবর্তনও বড় প্রভাব ফেলতে পারে।

আমি প্রোগ্রাম কোড প্রবাহের সাথে আগত হওয়া সহায়ক বলে মনে করি তাই যদি আমি পরিবর্তনগুলি করে নিই তবে কোন পদ্ধতি / ক্রিয়াকলাপগুলি কী তাকে কল করে তা নির্ভরতা অনুসন্ধান করতে পারি। ধরুন আমি পদ্ধতি সি পরিবর্তন করছি am

যদি কেবল 1 টি পদ্ধতি / ফাংশন সি কল করে তবে এটি একটি নিরাপদ পরিবর্তন। যদি 100 টি পদ্ধতি / ফাংশন সি কল করে তবে এটি আরও বেশি প্রভাব ফেলবে।

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

যদি এটি মাটির একটি বড় বল হয় তবে আপনি এর অভ্যন্তরীণ কাজগুলি কখনই বুঝতে পারবেন না (বা বুঝতে চান)।


2

আমি কিছু জিনিস ...

1) বিভিন্ন মডিউল আকার, জটিলতা মেট্রিক ইত্যাদি নির্ধারণ করতে উত্স মনিটরের মতো উত্স বিশ্লেষণ সরঞ্জামটি ব্যবহার করুন .. প্রকল্পটির অনুভূতি পেতে এবং অপ্রয়োজনীয় অঞ্চলগুলি সনাক্ত করতে সহায়তা করুন।

2) Eclipse এর নীচে থেকে নীচে কোডের মাধ্যমে ড্রিল করুন (এমন কোনও সম্পাদক থাকা ভাল যা রেফারেন্সগুলি ব্রাউজ করতে পারে ইত্যাদি) যতক্ষণ না জানতে পারা যায় যে কী চলছে এবং কোথাও কোড বেসে রয়েছে।

3) মাঝে মাঝে, স্থাপত্যের আরও ভাল চিত্র পেতে আমি ভিজিওতে চিত্রগুলি আঁকি । এটি প্রকল্পের অন্যদের জন্যও সহায়ক হতে পারে।


1

এটি অনেক কিছু ঘটে। আমি কোনও ওপেন সোর্স প্ল্যাটফর্মে কাজ শুরু করা অবধি আমার মনে হয় না যে আমি কখনও এমন একটি কাজ শুরু করেছি যা কোডটিতে কিছু "তর্ক" রয়েছে এমন ভর্তি দিয়ে শুরু হয়নি।

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


1

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

জুড়ি প্রোগ্রামিং একটি বিকল্প? অন্য ব্যক্তির ধারণাগুলি বন্ধ করে দেওয়া হ'ল সেই পরিমাণ বাজেটিকে মোকাবেলা করার জন্য দুর্দান্ত ধারণা।


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

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

1

সদৃশ অপসারণের জন্য আমরা এখানে একটি পদ্ধতি ব্যবহার করি।

  • সদৃশগুলির জন্য একটি স্ট্যান্ডার্ড কমেন্ট উপসর্গটি নির্বাচন করুন (আমরা [dupe]মন্তব্য মার্কারের ঠিক পরে ব্যবহার করি ;
  • সদৃশ প্রক্রিয়াটির জন্য আপনার দলগুলির সাথে নামগুলি লিখতে লিখুন;
  • প্রথম দফায়: প্রত্যেকে কিছু ফাইল [dupe][procedure_arbitrary_name]নিয়ে যায় এবং নকল প্রক্রিয়া করার আগে যোগ করে;
  • দ্বিতীয় রাউন্ড: প্রত্যেকে একটি প্রক্রিয়া, বা পদ্ধতির একটি উপসেট গ্রহণ করে এবং বিভিন্ন সম-উদ্দেশ্য বাস্তবায়নের সম্ভাবনার ক্রমকে নির্দেশ করে একটি মান নির্ধারণ করে (তারপরে স্ট্রিংটি হবে [dupe][procedure_arbitrary_name][n]:);
  • তৃতীয় রাউন্ড: প্রতিটি পদ্ধতির জন্য দায়বদ্ধ এটি প্রাসঙ্গিক শ্রেণিতে পুনর্লিখন করে;
  • চতুর্থ রাউন্ড: grepখুশি!

1

আমি মনে করি সর্বাধিক গুরুত্বপূর্ণ বিষয়গুলির মধ্যে একটি হ'ল একটি সাধারণ বৈশিষ্ট্য গ্রহণ করা, আপনি ভাবতে পারেন এমন সর্বাধিক চয়ন করুন এবং এটি বাস্তবায়ন করুন। যদি কোনও রক্ষণাবেক্ষণের ইচ্ছার তালিকা থাকে তবে তা ব্যবহার করুন বা অন্যথায় কোড বেসের সাথে পরিচিত কারও সাথে কথা বলুন এবং তাদের কোনও বৈশিষ্ট্য প্রস্তাব দেওয়ার জন্য পান। সাধারণত আমি আশা করি এটি 5 ~ 20 এলওসি দিয়ে পরিবর্তন হবে। গুরুত্বপূর্ণ বিষয়টি হ'ল এটি নয় যে আপনি খুব অভিনব বৈশিষ্ট্য যুক্ত করছেন তবে আপনি কোড বেসের সাথে কাজ করছেন (বা বরং ঝাঁকুনি দিয়ে :)) এবং পুরো কর্মপ্রবাহের মধ্য দিয়ে যাচ্ছেন। আপনি করতে হবে

  1. আপনি যে উপাদানটি সংশোধন করছেন তা বুঝতে কোড পড়ুন
  2. কোড পরিবর্তন করুন এবং এটি কীভাবে পার্শ্ববর্তী সিস্টেমকে প্রভাবিত করে তা বুঝুন।
  3. পরিবর্তনটি পরীক্ষা করুন এবং এভাবে উপাদানগুলি একে অপরের সাথে কীভাবে ইন্টারঅ্যাক্ট করে তা সনাক্ত করুন
  4. পরীক্ষার কেসটি লিখুন এবং আশা করি একটি বা দুটি পরীক্ষার কেস ভেঙে ফেলুন যাতে আপনি সেগুলি ঠিক করে নিতে পারেন এবং সিস্টেমের আক্রমণকারীদের বুঝতে পারবেন।
  5. জিনিসটি তৈরি করুন বা দেখুন সিআই এটি নির্মাণ করুন এবং তারপরে এটি চালান করুন

তালিকাগুলিটি কিন্তু এগিয়ে যায় তবে এটি হ'ল একটি মিনি প্রকল্প আপনাকে সিস্টেমের সাথে পরিচিত হওয়ার জন্য আপনার চেক তালিকার সমস্ত আইটেমগুলি নিয়ে যায় এবং ফলস্বরূপ একটি উত্পাদনশীল পরিবর্তন ঘটে।


1

আমি একটি সামান্য জিনিস যোগ করতে চাই:

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

আমি মাইন্ড ম্যাপিং পছন্দগুলির আধিক্যের মধ্যে ফ্রি প্লেন ব্যবহার করার পরামর্শ দিচ্ছি ।


1

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

দলের জন্য সংগ্রহশালায় সবকিছু পান এবং একটি শব্দকোষ যোগ করুন। সমস্ত ঘাঁটিতে জার্গন রয়েছে; শব্দকোষে এটি ডকুমেন্ট। সরঞ্জাম, পণ্য, গ্রাহক-নির্দিষ্ট ইত্যাদির জন্য বিভাগ তৈরি করুন

একটি সফ্টওয়্যার পরিবেশ তৈরি নথি তৈরি / আপডেট করুন। সমস্ত সরঞ্জাম, quirks, পছন্দ ইনস্টল, ইত্যাদি এখানে যান।

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

একবার আপনার ঝোঁকের বাঁক শেষ হয়ে গেলে ডকুমেন্টেশন আপডেট করার বিষয়ে চিন্তা করবেন না। পরের নতুন লোকটিকে এটি করতে দিন। তিনি পৌঁছে গেলে, তাকে আপনার কাজের দিকে নির্দেশ করুন। যখন তিনি ক্রমাগত উত্তরগুলির জন্য আপনার কাছে বাগদান করেন, তখন তাকে উত্তর দেবেন না। বরং আপনার ডকুমেন্টেশনে প্রশ্ন যুক্ত করুন এবং তারপরে তাকে ইউআরএল হস্তান্তর করুন। বর্শি.

এর একটি পার্শ্ব-প্রতিক্রিয়া হ'ল আপনি একটি সরঞ্জাম তৈরি করেছেন যা আপনি নিজেরাই ভুলে গেলে এখন থেকে কয়েক মাসের রেফারেন্স দিতে পারেন।

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


1

আমি এই বিষয়ে একটি দীর্ঘ দীর্ঘ পোস্ট লিখেছি। এখানে একটি অংশ

আমি বেশ কিছুক্ষণ এই সমস্যাটি নিয়ে ভাবলাম। আমি আমার নিজস্ব প্রক্রিয়াটি একটি সাধারণ প্রক্রিয়া হিসাবে লেখার সিদ্ধান্ত নিয়েছি। আমি নথিভুক্ত পদক্ষেপগুলি নিম্নরূপ:

  1. শব্দভান্ডার পত্রক তৈরি করুন
  2. অ্যাপ্লিকেশন শিখুন
  3. ব্রাউজ উপলভ্য ডকুমেন্টেশন
  4. অনুমান করুন
  5. তৃতীয় পক্ষের গ্রন্থাগারগুলি সন্ধান করুন
  6. কোড বিশ্লেষণ করুন

এই প্রক্রিয়াটি একটি বৃহত ডেস্কটপ অ্যাপ্লিকেশন প্রসঙ্গে লেখা হয়, তবে সাধারণ কৌশলগুলি এখনও ওয়েব অ্যাপ্লিকেশন এবং আরও ছোট মডিউলগুলির ক্ষেত্রে প্রযোজ্য।

থেকে নেওয়া: একটি নতুন কোডবেস শেখার জন্য একটি প্রক্রিয়া


1

আমি ভাগ করতে পারি এমন কয়েকটি ছোট টিপস রয়েছে।

একটি বিদ্যমান পণ্যের জন্য, আমি তাদের নিবিড়ভাবে পরীক্ষা শুরু করি। যদি কোনও কাজ বাছাই / নিযুক্ত করা হয় তবে আমি নির্দিষ্ট বৈশিষ্ট্যটিতে আরও ফোকাস করব।

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

  • পরবর্তী পদক্ষেপটি তার দায়বদ্ধতার সাথে সাধারণ বর্গ চিত্র তৈরি করবে (সিআরসি কার্ডের মতো)

  • সামান্য পরিবর্তন করা শুরু করুন বা সংশোধন এবং প্রতিশ্রুতিবদ্ধ করার জন্য ছোটখাটো বাগ গ্রহণ করুন। সুতরাং আমরা প্রকল্পের কাজের প্রবাহ শিখতে পারি; শুধু কোড নয় অনুমোদন এবং নিরীক্ষণের স্বার্থে প্রায়শই বড় পণ্যগুলির মধ্যে কিছু ধরণের বই থাকে (যেমন স্বাস্থ্যসেবা প্রকল্পগুলি)

  • প্রকল্পটিতে ইতিমধ্যে কাজ করা লোকদের সাথে কথা বলুন। আপনার ধারণা, চিন্তাভাবনা প্রকাশ করুন এবং এর পরিবর্তে দীর্ঘদিন ধরে এই প্রকল্পের সাথে কাজ করার বিষয়ে তাদের অভিজ্ঞতা এবং মতামত পান। এটি বেশ গুরুত্বপূর্ণ কারণ এটি আপনাকে দলের সাথে ভালভাবে চলতে সহায়তা করে।


1

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

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

গত 12 মাসে, আমাদের দলে 4 জন নতুন সদস্য রয়েছে এবং প্রতিবার, নতুন সদস্য কোড বেসের সাথে ভালভাবে পরিচিত অন্য সদস্যের সাথে জুটি বেঁধে দেবেন। শুরুতে, প্রবীণ দলের সদস্যের কীবোর্ড থাকবে। প্রায় 30 মিনিটের পরে আমরা নতুন সদস্যটির কাছে কীবোর্ডটি পাস করব, যারা প্রবীণ দলের সদস্যের নির্দেশনায় কাজ করবে।

এই প্রক্রিয়াটি যথেষ্ট সফল প্রমাণিত হয়েছে।


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