রিফ্যাক্টরিংয়ের কারণে মার্জ সংঘাতগুলি সমাধান করা


13

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

কেউ যদি কোডটির কোনও অংশের রিফ্যাক্টরিংয়ের কারণে অন্য কারও সাথে একই অংশের কোডের জন্য কোনও বৈশিষ্ট্যটিতে কাজ করছিল তখন কীভাবে কোনও একীভূত সংঘাতের বিরোধ ঘটে?

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


আমার একই ধরণের প্রশ্ন রয়েছে তবে বিভিন্ন প্রয়োজনীয়তার সাথে আমি আরও একটি প্রশ্ন যুক্ত করেছি। প্রোগ্রামার্স.স্ট্যাক্কেচেঞ্জঞ্জ
প্রশ্নগুলি ১০০৯২২৯ /…

উত্তর:


9

ভাল প্রশ্ন. আমি ভাবতে পারি সেরা কৌশলটি হ'ল:

প্রতিরোধ

অবিচ্ছিন্ন একীকরণের সংমিশ্রণ এবং প্রায়শই ছোট রিফ্যাক্টরিংগুলি তৈরি করা (মাঝেমধ্যে বৃহত রিফ্যাক্টরিংগুলির পরিবর্তে) এই জাতীয় বিরোধগুলির ব্যয় এবং ফ্রিকোয়েন্সি হ্রাস করতে দীর্ঘ পথ যেতে হবে।


3

আমি আপনার প্রশ্নের উত্তর দেওয়ার জন্য ভাবি, প্রথমে আমাদের দেখতে হবে কেন দ্বন্দ্ব হয়, এবং সংযুক্তির আসল অর্থ এবং প্রক্রিয়াটি কী?

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

প্রকৃতির এটির অর্থ দ্বিতীয় বিকাশকারীটির মনে প্রথম বিকাশকারী থেকে আলাদা কিছু থাকে। এই পার্থক্যটি স্টাইলিং থেকে আলাদা হতে পারে, যেমন আপনি উল্লিখিত স্তরের new UserManager().GetUserName()পরিবর্তে ব্যবহার করা UserManager userManager = new UserManager(); userManager.GetUserName();, যার অর্থ উভয় বিকাশকারী কোডটি কীভাবে উন্নত করতে পারেন তা কীভাবে রিফ্যাক্টর করবেন সে সম্পর্কে বিভিন্ন ধারণা ছিল।

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

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

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

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


3

যদি কাজের কোনও সক্রিয় পরিচালনা না থাকে তবে আপনার দ্বন্দ্ব রয়েছে।

তবে, আপনার যদি দৈনিক স্ট্যান্ড আপ মিটিং বা ম্যানেজার থাকে তবে আপনার সম্ভবত এই সমস্যা হতে পারে না।

হয় কথা হয় (দৈনিক স্ট্যান্ড আপের মাধ্যমে) বা কোনও পরিচালকের সাথে কথা বলুন।

বিষয়টি তুচ্ছভাবে কথা বলার মাধ্যমে প্রতিরোধ করা হয়।


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

@ মারকজে: ম্যানেজার যে বিরোধগুলিকে মার্জ করার ক্ষেত্রে একটি বাধা, এটি কোনও খারাপ জিনিস নয়। দুর্দান্ত পয়েন্ট।
এস .লট

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

1

একটি নির্দিষ্ট বৈশিষ্ট্য বিকাশের জন্য একটি পৃথক সাধারণ শাখা রাখুন, প্রায়শই মার্জ / টান / পুশ করুন - এটাই।

এবং যোগাযোগ । প্রবর্তনকালেও কোড সম্পর্কে অন্যান্য বিকাশকারীদের সাথে কথা বলুন। এমনকি কোডিংয়ের সময়ও)))


1

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

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