আমি একটি পদ্ধতি স্বাক্ষর পরিবর্তন করেছি এবং এখন 25,000 এরও বেশি ত্রুটি রয়েছে। এখন কি?


166

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

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

আমার শেষ কাজটিতে আমি কখনই এ জাতীয় সমস্যার মুখোমুখি হইনি। আমি কি করব?


7
আপনার কী ধরণের ত্রুটি এবং "এই শ্রেণি" কী তা সম্পর্কে আমাদের আরও তথ্য দেওয়ার দরকার যা আমরা পাঠকদের মনে করি না।
কিয়াসনাম

137
ভিএস-তে প্রদর্শিত 25000 টিরও বেশি ত্রুটিযুক্ত নম্বরগুলি প্রায়শই ভুল। কয়েকটি ত্রুটি রয়েছে, তবে প্রায়শই ব্যবহৃত ডেল ভেঙে দেওয়ার সাথে সাথে অন্যান্য বিল্ডগুলিও ব্যর্থ হয় এবং জ্যোতির্বিজ্ঞানের ত্রুটির সংখ্যা বাড়িয়ে তোলে। আমি সর্বদা প্রথম ত্রুটি বার্তাটি স্থির করতে শুরু করি ত্রুটি তালিকায় নয়, বিল্ড আউটপুটে পাওয়া যায়।
বার্নহার্ড হিলার

13
আপনি যে পদ্ধতিটি বদলেছেন তাতে স্বাক্ষরের আগে এবং পরে আমি দেখতে চাই। বিটিডাব্লু - 25 কে ত্রুটিগুলি সত্যিই খুব বেশি শোনায় না sound হতাশ হ্যাঁ, ভয়ঙ্কর, হ্যাঁ, নিয়ন্ত্রণহীন, না।
jmoreno

46
পাবলিক ইন্টারফেস একটি চুক্তি is এই জাতীয় চুক্তিগুলি ভঙ্গ করবেন না - নতুন তৈরি করুন।
ম্যাথিউ

6
25000 ত্রুটি !? হিউস্টন, আমরা একটি সমস্যা পেয়েছি। অবশ্যই পরিবর্তনটি ফিরিয়ে আনুন এবং আপনার ম্যানেজারের সাথে কথা বলুন, তাকে ব্যাখ্যা করুন যে আপনাকে পুরোপুরি একটি নতুন ইন্টারফেস তৈরি করতে হতে পারে।
কোড হুইস্পিয়ারার

উত্তর:


349

25000 ত্রুটিগুলির মূল অর্থ "এটি স্পর্শ করবেন না"। এটি আবার পরিবর্তন করুন। পছন্দসই ইন্টারফেস রয়েছে এমন একটি নতুন ক্লাস তৈরি করুন এবং ধীরে ধীরে ক্লাসের গ্রাহকদেরকে নতুনটিতে সরিয়ে দিন। ভাষার উপর নির্ভর করে, আপনি পুরাতন শ্রেণিকে অবচিত হিসাবে চিহ্নিত করতে পারেন, যা সমস্ত ধরণের সংকলক সতর্কতাগুলির কারণ হতে পারে, তবে বাস্তবে আপনার বিল্ডটি ভাঙবে না।

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


79
এটি অগত্যা একটি নতুন শ্রেণি হতে হবে না । ভাষা এবং পরিস্থিতির উপর নির্ভর করে এটি কোনও ফাংশন, ইন্টারফেস, বৈশিষ্ট্য ইত্যাদি হতে পারে
জানু হুডেক

33
পুরানো ইন্টারফেসটি নতুনটির সাথে সামঞ্জস্যতা মোড়ক দ্বারা প্রতিস্থাপিত করা যায় কিনা তাও সহায়তা করে।
জানু হুডেক

79
কখনও কখনও, 25000 ত্রুটি আসলে এর অর্থ আমরা কখনই তা স্পর্শ করার সাহস পাইনি, তবে এখন যে একজন আগত আগমনকারী এসেছিল, আসুন আমরা তাকে সেই পরিষ্কার-আউজিয়ান-আস্তাবল টাস্কটি দেই।
mouviciel

13
@ থিমি: আমি একমত, 1 পরিবর্তন এবং 25 কে ত্রুটি সম্ভবত প্রায় 2.5k এর পরিবর্তনের অর্থ, এবং এটি আবিষ্কার করতে পেরে আমি অবাক হব না যে এটি বেশিরভাগ ক্ষেত্রেই হয়েছে, তবে কার্যকর।
jmoreno

33
এই 25000 ত্রুটিগুলি সমস্ত একক পরিবর্তন দ্বারা স্থিরযোগ্য হতে পারে। যদি আমি একটি বিশাল উত্তরাধিকারের বেস শ্রেণিটি ভাঙ্গি, উত্পন্ন শ্রেণীর প্রত্যেকটিই অবৈধ ভিত্তির সম্পর্কে ত্রুটিগুলি স্পর্শ করবে, classes শ্রেণির প্রতিটি ব্যবহার ক্লাসটি বিদ্যমান নেই সম্পর্কে ত্রুটিগুলি স্পর্শ করবে etc. ইত্যাদি ভাবুন এটি "getName" ছিল, এবং আমি যুক্ত করেছি একটি যুক্তি। "হাসানাম" বাস্তবায়ন ক্লাসে ওভাররাইড এখন কাজ করে না (ত্রুটি), এবং এর থেকে উত্তরাধিকার সূত্রে প্রাপ্ত সমস্ত কিছুই এখন ত্রুটি (সমস্ত 1000 ক্লাস) উত্পন্ন করে, পাশাপাশি প্রতিবার আমি তাদের যে কোনও একটি উদাহরণ তৈরি করি (প্রতি ক্লাসে 24x) গড়)। ঠিক আছে ... এক লাইন।
ইয়াক

80

বিভাজন এবং রিফ্যাক্টরিংসের সাথে বিজয়

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

বিভক্ত করা

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

জয় করা

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

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

উদাহরণ

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

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

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

কখনও কখনও যে কাজ করে না

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

দুর্ভাগ্যক্রমে এটি কাজ করবে না যদি স্বাক্ষর পরিবর্তন খুব জটিল হয় এবং ছোট পরিবর্তনগুলিতে ভেঙে না যায়। তবে এটি বিরল; ছোট সমস্যায় সমস্যা বিভাজন সাধারণত দেখায় যে এটা হয় সম্ভব।


12
এই. রিফ্যাক্টর আপনি যদি (নিরাপদে) পারেন তবে অন্যথায় আপনার সঠিক স্থানান্তর দরকার।
sleske

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

36

একজন পেশাদার সফ্টওয়্যার বিকাশকারী হিসাবে সমস্যা এবং আপনার প্রয়োজনীয়তা বুঝতে তাকে সহায়তা করার জন্য আপনার বসের সাথে আপনার কার্যটি পরিষ্কার করুন।

আপনি যদি কোনও দলের অংশ হন তবে সীসা বিকাশকারীকে সন্ধান করুন এবং তাঁর কাছে পরামর্শ চান।

শুভকামনা।


15
এটি আমি প্রথম পদক্ষেপ নিয়েছি - "আমি একজন জুনিয়র এবং আমার বস আমাকে কিছু করতে বলেছিলেন এবং এখন আমি সত্যিই একটি বড় ত্রুটির বার্তা পাচ্ছি, তবে আমার বস আমাকে সে সম্পর্কে কিছু বলেননি।" পদক্ষেপ 1: "আরে বস, আমি জিনিসটি করেছি, তবে আমি এখন 25k ত্রুটি পেয়েছি that এটি হওয়ার কথা, নাকি ..."
পিম্পড

28

এটি স্পর্শ করবেন না। কিছু করবেন না।

পরিবর্তে, আপনার চেয়ারে বসে চিৎকার করুন "হিলিপ !!!!!" আপনি যতটা জোরে জোরে পারেন

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

এবং এটি বস হতে পারে আপনার সিনিয়র সহকর্মীদের একই পরিবর্তন আনতে বলেছিল এবং তারা "না" বলেছিল। কারণ তারা জানত কি হবে। এজন্য আপনাকে কাজ দেওয়া হয়েছিল।


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

@TheGreatDuck: আমাকে বলুন সর্বত্র এবং ব্যবহৃত একটি ইন্টারফেস দেখিনি ভুল সর্বত্র। আমি নিশ্চিত।
জোশুয়া

@ জোশুয়া এটি আমি যা বলেছিলাম তার সাথেও প্রাসঙ্গিক নয়। একটি বার্ষিক বাগ ঠিক করার সময় এটির বুদ্ধিমান ধারণাটি না হ'ল মানে 10,000+ কোডের কোড লাইনে। দুর্ভাগ্যক্রমে, কোনও নতুন কর্মচারী 10 জন কর্মচারীকে কাজের বাইরে বাইরে টানতে পারে যাতে তাদের বসকে প্রভাবিত করতে এবং কোডটি পুনরায় লেখা যায় enough অবশ্যই, এটি করা একটি দুর্দান্ত জিনিস তবে কখনও কখনও যথেষ্ট হয়। আপনাকে কেবল বাগের অস্তিত্ব গ্রহণ করতে হবে।
দ্য গ্রেট ডাক

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

22

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


10

মূল্যনির্ধারণ

এই পরিবর্তনটি প্রয়োজনীয় কিনা তা মূল্যায়ন করুন বা আপনি কোনও নতুন পদ্ধতি যুক্ত করতে পারেন এবং অন্যটিকে অবনমিত করতে পারেন কিনা তা মূল্যায়ন করুন

অগ্রবর্তী

যদি পরিবর্তন প্রয়োজন; তারপরে একটি মাইগ্রেশন পরিকল্পনা প্রয়োজন।

প্রথম পদক্ষেপটি হল নতুন পদ্ধতিটি প্রবর্তন করা এবং পুরানো পদ্ধতিটি তার যুক্তিগুলি ম্যাসেজ করা যাতে এটি নতুনকে কল করতে পারে। এর জন্য কয়েকটি জিনিস হার্ড-কোডিংয়ের প্রয়োজন হতে পারে; সেটা ঠিক আছে.

এটি একটি প্রতিশ্রুতিবদ্ধ বিন্দু: পরীক্ষা করুন যে সমস্ত পরীক্ষা পাস, কমিট, পুশ করে।

মাইগ্রেট

ব্যস্ত কাজ পুরানো পদ্ধতির সমস্ত কলারকে নতুনটিতে স্থানান্তরিত করছে। ভাগ্যক্রমে ফরওয়ার্ডকে ধন্যবাদ ধীরে ধীরে এটি করা যায়।

তাই এগিয়ে যান; সহায়তার জন্য সরঞ্জামগুলি ব্যবহার করতে দ্বিধা করবেন না ( sedসর্বাধিক মৌলিক হওয়ায়, অন্যরাও আছেন)।

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

এটি একটি কমিট পয়েন্ট (বা সম্ভবত বেশ কয়েকটি কমিট পয়েন্ট): পরীক্ষা করুন যে সমস্ত পরীক্ষা পাস, কমিট, পুশ করে push

অপসারণ

কিছু সময় কেটে যাওয়ার পরে (সম্ভবত একটি দিন হিসাবে সামান্য), কেবল পুরানো পদ্ধতিটি সরিয়ে দিন।


4
sedসম্ভবত একটি খারাপ ধারণা ... এমন কিছু যা ভাষাটি আসলে "বোঝে" এবং অনিচ্ছাকৃত কঠোর পরিবর্তন করে না সেগুলি ভাল।
wizzwizz4

1
@ উইজউইফজ ৪: দুর্ভাগ্যক্রমে, আমি খুব কম কিছু সরঞ্জাম পেয়েছি যা প্রকৃতপক্ষে সি ++ এর জন্য যথেষ্ট ভাল ভাষা বুঝতে পারে ; বেশিরভাগ সরঞ্জামগুলি পুনরায় নামকরণ করতে পারে বলে মনে হয় এবং এটিই। মঞ্জুর, কেবলমাত্র সঠিক পদ্ধতি কলগুলির নাম পরিবর্তন করা (এবং কোনও ওভারলোড বা সম্পর্কিত নয় একইভাবে নামযুক্ত পদ্ধতি কলগুলি) ইতিমধ্যে চিত্তাকর্ষক, তবে আরও জটিল কোনও কিছুর জন্য এটি অপ্রতুল। খুব কমপক্ষে, আপনার (১) যুক্তিগুলি বদলানো, (২) প্রদত্ত যুক্তির একটি রূপান্তর প্রয়োগ করুন ( .c_str()উদাহরণস্বরূপ কল করুন ) এবং নতুন যুক্তি উপস্থাপনের জন্য আপনার প্রয়োজন হবে। sedকিন্ডা কাজ করে, সংকলক এর পরে বিষয়গুলি ধরবে।
ম্যাথিউ এম।

1
sed(বা ed) এই ধরণের জিনিসটির জন্য পর্যাপ্ত হতে পারে - যতক্ষণ না আপনি প্রতিশ্রুতি দেওয়ার আগে আলাদাভাবে পর্যালোচনা করেন।
টবি স্পিড

এটি এইচটিএমএল এর টিসিআরআর, তাই না? :)
ড্যানিয়েল স্প্রিংগার

8

যদি পদ্ধতির স্বাক্ষরে আপনার পরিবর্তনটি কেবল একটি নাম পরিবর্তন হয়, তবে সহজ সমাধানটি হ'ল 25,000 শ্রেণিতে যে পদ্ধতিটি প্রশ্নের মধ্যে উল্লেখ রয়েছে তার পরিবর্তনটি স্বয়ংক্রিয় করতে সরঞ্জামগুলি ব্যবহার করা।

আমি ধরে নিয়েছি যে আপনি কেবল কোডটি ম্যানুয়ালি সম্পাদনা করেছেন, যা সমস্ত ত্রুটির জন্ম দিয়েছে। আমিও ধরে নিয়েছি যে আপনি জাভা (ওএসজিআই-র আপনার রেফারেন্স দেখে) এর সাথে परिचित, তাই উদাহরণস্বরূপে (যেমন, আপনি কোন প্রোগ্রামিং এনভায়রনমেন্ট ব্যবহার করেন তা আমি জানি না, তবে অন্যান্য পরিবেশে একই রকম রিফ্যাক্টরিং সরঞ্জাম রয়েছে) আপনি "রিফ্যাক্টরিং -> নাম পরিবর্তন" ব্যবহার করতে পারেন পদ্ধতির সমস্ত রেফারেন্স আপডেট করতে, যা আপনাকে কোনও ত্রুটি ছাড়াই ছেড়ে দেওয়া উচিত।

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


2
ওপি বিশেষত বলেছিল যে ওএসজি তাদের আগের কাজ ছিল, সুতরাং এটি এখানে প্রকৃতপক্ষে প্রাসঙ্গিক নয়।
একটি সিভিএন

3
@ মাইকেল কেরল্লিং যদি ওপি তাদের আগের চাকরিতে কোনও জাভা প্রোগ্রামার হয়ে থাকে তবে তারা এই চাকরিতে জাভা প্রোগ্রামার হবার চেয়ে আরও ভাল সম্ভাবনা রয়েছে।
ধনী

@ মাইকেলKjörling আমি পুনরুদ্ধার জন্য Elpipse ব্যবহার করে একটি কংক্রিটের সুপারিশ দিতে চেয়েছিলাম কারণ ওপি জাভার সাথে পরিচিত। ওপি প্রকৃতপক্ষে বর্তমান প্রকল্পের জন্য জাভা ব্যবহার করছে কিনা, আমার ধারণা, কম গুরুত্বপূর্ণ নয়, তবে আমার উত্তরটি পরিষ্কার করা উচিত। ধন্যবাদ।
মিক্কেলআরজে

6

এখানে আমার অবদান।

আমি সম্প্রতি একটি নতুন কাজ শুরু করেছি যেখানে আমি খুব বড় অ্যাপ্লিকেশনটিতে (কোডের 15 এম লাইন) কাজ করছি।

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

বিদ্যমান সমাধানটি বোঝা আপনি কোথায় প্রবেশ করছেন সে সম্পর্কে একটি আরও ভাল দৃষ্টিভঙ্গি দেয়। সমাধান এবং এর গুরুত্বকে কনটেক্সুয়ালাইজ করুন।

@ গ্রেগ ইঙ্গিত হিসাবে, আপনি (রিগ্রেশন পরীক্ষা) এর সাথে তুলনা করার জন্য একটি বৈধ রেফারেন্সের জন্য বিদ্যমান কোডটি পরীক্ষা করতে সক্ষম হওয়া উচিত। আপনার সমাধানটি বিদ্যমান ফলাফলের তুলনায় খুব একই ফলাফল তৈরি করতে সক্ষম হওয়া উচিত । এই পর্যায়ে, ফলাফলগুলি ঠিক আছে কি না সে সম্পর্কে আপনি চিন্তা করবেন না । প্রথম লক্ষ্যটি বাগের সংশোধন না করে রিফ্যাক্টর করা। যদি বিদ্যমান সমাধানটি "2 + 2 = 42" বলে, আপনার সমাধানটিও হওয়া উচিত। যদি এটি ব্যতিক্রম ছুঁড়ে না ফেলে, আপনারও উচিত নয়। যদি এটি নাল ফেরায়, আপনারও নালাগুলি ফিরে আসা উচিত। ইত্যাদি। অন্যথায়, আপনি কোডের 25k লাইনের সাথে আপস করবেন।

এটি বিপরীতমুখী সামঞ্জস্যের স্বার্থে।

কেন? কারণ এই মুহুর্তে, এটি আপনার সফল রিফ্যাক্টরের অনন্য গ্যারান্টি।

এবং ইউনিট পরীক্ষার অনেকগুলি সরাসরি সেই ইন্টারফেসটিকে সরাসরি উল্লেখ করে বা বেস ক্লাসে মিলিত হয় যা সেই ইন্টারফেসটিকে উল্লেখ করে।

Retro- সামঞ্জস্যতা গ্যারান্টি একটি উপায় জরুরিভাবে আপনার জন্য প্রয়োজন তাই আপনার প্রথম চ্যালেঞ্জ এখানে। ইউনিট পরীক্ষার জন্য উপাদানটি বিচ্ছিন্ন করুন।

মনে রাখবেন যে সেই 25k লাইনের কোডগুলি বিদ্যমান কোডের সম্ভাব্য ফলাফলগুলি ধরে নিয়ে তৈরি করা হয়েছিল। আপনি যদি চুক্তির এই অংশটি না ভাঙ্গেন তবে আপনি চূড়ান্ত সমাধানের অর্ধেক পথ। আপনি যদি করেন, ভাল: বল আপনার সাথে থাকতে পারে

একবার আপনি নতুন "চুক্তি" ডিজাইন এবং প্রয়োগ করেছেন, পুরানোটি প্রতিস্থাপন করুন। এটি অবমূল্যায়ন করুন বা এটি বাইরে নিয়ে যান।

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

কোডের 25k লাইনগুলি আমাকে কেবলমাত্র একটি কাজে ফোকাস করার জন্য যথেষ্ট সমস্যা বলে মনে হচ্ছে।

আপনার প্রথম কাজটি শেষ হয়ে গেলে। আপনার বাগের জন্য সেই বাগগুলি / বৈশিষ্ট্যগুলি প্রকাশ করুন।

অবশেষে, @ স্টিফেন যেমন বলেছে:

ধীরে ধীরে জিনিসগুলি আরও ভাল করা ব্যতীত আপনি এগুলি করতে পারবেন না। আপনি যখন নতুন ক্লাস তৈরি করেন, তা নিশ্চিত করে নিন যে আপনি সেগুলি সঠিকভাবে পরীক্ষা করেছেন এবং সলিড নীতিগুলি ব্যবহার করে তাদের তৈরি করেছেন যাতে ভবিষ্যতে এগুলি পরিবর্তন করা আরও সহজ হবে make


5

এটা পরীক্ষা করো.

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

সুতরাং, পরবর্তী কাজটি হ'ল আপনার রিগ্রেশন টেস্ট স্যুটটি উড়ন্ত রঙের সাথে পাস করেছে তা নিশ্চিত করুন। এবং যদি আপনার একটি না থাকে, তবে যা ইচ্ছা তা তৈরি করুন। আপনার একচেটিয়া প্রকল্পে একটি বিস্তৃত রিগ্রেশন টেস্ট স্যুট যুক্ত করা বিরক্তিকর মনে হলেও মুক্তির প্রার্থীদের মধ্যে আস্থা বাড়ানোর এক দুর্দান্ত উপায়, পাশাপাশি স্যুটটি স্বয়ংক্রিয়ভাবে সজ্জিত হলে দ্রুত তাদের মুক্তি দিন release

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