কোড পর্যালোচনার জন্য জমা দেওয়া কোডটি খুব জটিল বলে মনে হচ্ছে তখন কী করবেন?


115

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

এই পরিস্থিতিতে কর্মের সেরা কোর্সটি কী? একটি করণ উপর জোর? আংশিক করণীয়? প্রথমে রি-ফ্যাক্টরিং? কেবল বাগগুলি ঠিক করুন এবং প্রযুক্তিগত acceptণ গ্রহণ করবেন ? এই বিকল্পগুলির উপর একটি ঝুঁকি মূল্যায়ন এবং তারপরে সিদ্ধান্ত নিন? অন্যকিছু?


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



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

7
@ পিটারজির্কেন্স বা সম্ভবত এটি জটিল সমস্যা সমাধানের কারণে খুব জটিল?
কেসি

উত্তর:


251

যদি এটি পর্যালোচনা না করা যায় তবে এটি পর্যালোচনা পাস করতে পারে না।

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

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


49
এই খুব। মনে রাখবেন যে কেবল আপনি এবং লেখকই এই কোডটি পড়বেন না। এটি 10 ​​বছরের মধ্যে কিছুটা এলোমেলো ইন্টার্নও হবে, তাই আপনি নিশ্চিত হতে চান যে তার কী চলছে তা বুঝতে সক্ষম হওয়ার সম্ভাবনা রয়েছে।
ডেভিড গ্রিনবার্গ

2
ভাল উত্তর. এটি "কোড পর্যালোচনা" এর উদ্দেশ্যটির উপর নির্ভর করে। পঠনযোগ্যতা একটি জিনিস, অন্য কাঠামো - তবে তাদের খুব ঘনিষ্ঠভাবে সম্পর্কিত। fww আমি মেজর কর্পস দ্বারা রচিত কিছু উন্মুক্ত উত্স নিয়ে কাজ করছি এবং এটি প্রায় অপঠনযোগ্য কারণ ভেরি এবং এফএন নামগুলি চুলের মগজযুক্ত।

19
@ ডেভিডগ্রিনবার্গ সমস্ত ব্যবহারিক কাজের জন্য, "আপনি ছয় মাসের মধ্যে" সম্পূর্ণ ভিন্ন ব্যক্তি।
ক্রাইলিস -হান ধর্মঘট-

2
কিছু সময়ের জন্য কোডটি রেখে দিন (তাঁর পক্ষে সমস্ত কিছু মনে না রাখার জন্য যথেষ্ট দীর্ঘ)। আসল কোডারটিকে এটি পর্যালোচনা করতে বলুন। তিনি এটি বুঝতে পেরেছেন কিনা দেখুন।
নেলসন

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

45

আপনার উল্লেখ করা সমস্ত কিছু একটি কোড পর্যালোচনাতে নির্দেশ করার জন্য পুরোপুরি বৈধ।

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

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

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


30

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

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

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


4
দুর্দান্ত মন্তব্য! "বেশিরভাগ কোড এতটা চুষে ফেলে যে এটি সহজেই প্রতিবারের মধ্যে 10 বার রিফ্যাক্ট হয়ে যায় এবং প্রতিবারই বেশি পঠনযোগ্য হয়" ছেলে, আমি কি তা করার জন্য দোষী হয়েছি :)
ডিন র‌্যাডক্লিফ

1
"বেশিরভাগ কোড এতটা স্তন্যপান করে যে এটি প্রতিটি বারে আরও পঠনযোগ্য হয়ে সহজেই টানা 10 বার রিফ্যাক্ট করতে পারে।" প্রকৃতপক্ষে, এটি সত্য পৃথিবীতে এটিই।
পিটার মর্টেনসেন

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

15

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

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

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

আরেকটি উত্তরে বলা হয়েছে যে কিছু লোকের কোডটি 10 ​​বার রিফ্যাক্ট করা যেতে পারে এবং প্রতিবারই বেশি পঠনযোগ্য হয়। এটা ঠিক দুঃখজনক। এটি এমন একজন বিকাশকারী যাকে আলাদা কাজের সন্ধান করা উচিত।


আমার কোডটি 10 ​​বার রিফ্যাক্টর করতে আমার অনেক কম সময় নেয়, তারপরে কোডটির প্রথম সংস্করণ লিখতে আমার লাগে takes অন্য কেউ যদি জানেন যে আমি এই রিফ্যাক্টরিংটি করেছি তবে আমি ব্যর্থ হয়েছি।
ইয়ান

6

এই পুরানো কোডটি কি কিছুটা পরিবর্তন করা হয়েছিল? (১০০ টি লাইনের কোডবিজে কোডের 100 টি রেখাঙ্কন এখনও কিছুটা পরিবর্তন রয়েছে) কখনও কখনও সময়সীমাবদ্ধতা থাকে এবং বিকাশকারীরা একটি পুরানো এবং অসুবিধার কাঠামোর মধ্যে থাকতে বাধ্য হয়, কেবলমাত্র একটি সম্পূর্ণ পুনর্লিখন আরও বেশি সময় নেয় এবং বাজেটের বাইরে যাওয়ার পথে থাকে because । + সাধারণত ঝুঁকির সাথে জড়িত থাকে, যা ভুলভাবে মূল্যায়ন করলে মিলিয়ন মিলিয়ন ডলার ব্যয় করতে পারে। এটি যদি পুরানো কোড হয় তবে বেশিরভাগ ক্ষেত্রে আপনাকে এটির সাথে থাকতে হবে। যদি আপনি নিজে থেকে এটি বুঝতে না পারেন, তাদের সাথে কথা বলুন এবং তারা যা বলে তা শোনেন, বোঝার চেষ্টা করুন। মনে রাখবেন, আপনার পক্ষে অনুসরণ করা কঠিন হতে পারে তবে অন্যান্য লোকের পক্ষে এটি পুরোপুরি ঠিক। তাদের পক্ষ নিন, এটি তাদের শেষ থেকে দেখুন।

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


2
আপনি কেবল "রিফ্যাক্টর। এখন" বলে কোডটি ফেরান না - কেন? আমি কমপক্ষে একবার এবং শেষ বার এই জাতীয় পর্যালোচনা মন্তব্য পেয়েছি মনে করি এটি কার্যকর এবং সঠিক হয়ে গেছে। আমাকে স্ক্র্যাচ থেকে কোডের বড় অংশটি আবার লিখতে হয়েছিল এবং এটি করা সঠিক কাজ ছিল কারণ পিছনে ফিরে তাকানো আমি নিজেই দেখেছি যে পুরানো কোডটি একটি অকার্যকর ঝামেলা। পর্যালোচক কেবল যথেষ্ট যে লক্ষ্য করা যোগ্যতা ছিল (এবং আমি দৃশ্যত ছিল না)
মশা

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

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

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

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

2

প্রায়শই "জটিল" প্যাচ / চেঞ্জলিস্টগুলি হ'ল যা একই সাথে বিভিন্ন রকম কাজ করে। এখানে নতুন কোড, মোছা কোড, রিফ্যাক্টর কোড, সরানো কোড, প্রসারিত পরীক্ষা রয়েছে; এটি বড় ছবি দেখতে কঠিন করে তোলে।

একটি সাধারণ ক্লু ক্লু হ'ল প্যাচটি বিশাল তবে এর বিবরণটি খুব সামান্য: "প্রয়োগ করুন $ এফওও"।

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

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

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

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

"ইমপ্লিমেন্ট $ এফইও" এর মতো এত বড় প্যাচ এই জাতীয় প্যাচগুলির মতো সিরিজে পরিণত হয়:

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

নোট করুন যে 1-5 পদক্ষেপগুলি পণ্যটিতে কোনও কার্যকরী পরিবর্তন করে না। আপনার কাছে সমস্ত সঠিক পরীক্ষা আছে তা নিশ্চিত করে তা পর্যালোচনা করতে তারা তুচ্ছ। এমনকি step ধাপটি এখনও "জটিল" হলেও অন্তত এটি $ এফইও-র উপর ফোকাস করে। এবং লগটি স্বাভাবিকভাবেই আপনাকে $ এফওও বাস্তবায়ন করা হয়েছিল (এবং কেন ফ্রবনেটিকে পরিবর্তন করা হয়েছিল) সম্পর্কে আরও ভাল ধারণা দেয়।


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

1

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

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

জটিলতাটি যদি পদ্ধতি স্তরে বিযুক্ত হয় যা সাধারণত পুনরাবৃত্তভাবে এবং ভাল স্বয়ংক্রিয় পরীক্ষার মাধ্যমে সংশোধন করা যায়।

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

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


0

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

যদি এটি ভালভাবে পরীক্ষা না করা হয় তবে পর্যালোচনা শুরু করার জন্য এটি ভাল জায়গা।

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