একটি বৃহত কোড বেস এবং অনেক বিকাশকারীকে আপনি কীভাবে রিফ্যাক্টরিং পরিচালনা করবেন?


13

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

আমরা চারটি মহাদেশে কোডের 4.5 মিলিয়ন লাইন এবং বিকাশকারীদের 20 টিরও বেশি দল পেয়েছি।

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

আপনি কি সমাধান জানেন?


1
কোনও গ্রিপ প্লাগইন সম্পর্কে জানেন না ... এটি সংস্করণ নিয়ন্ত্রণ সিস্টেমের জন্য একটি কাজের মতো শোনাচ্ছে।
এসএল বার্থ - মনিকা পুনরায় স্থাপন করুন

আপনি কেন এটি প্রতিরোধ করতে চান? এটি জটিলতা (বাগ) এড়াতে বা বিকাশকারীদের সময় বাঁচানোর জন্য? সমাধান এই আইএমওর উত্তরের উপর নির্ভর করে।
কাপ্তজনকোল্ড

আপনি কেন কিছু এসভিএন চেষ্টা করবেন না, অ্যাপাচি সাবভার্সন বা কচ্ছপ এসএনএন এর জন্য ভাল হবে।

1
বিশ টি দল একই উত্সটি সম্পাদনা করে কেন?

আমাদের একটি ভিসিএস আছে। আমরা সবেমাত্র ক্লিয়ার কেস থেকে গিটে পরিবর্তন করেছি।
রজার সিএস ওয়ার্নারসন

উত্তর:


14

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

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

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


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

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

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

আমি নীতিগতভাবে লকগুলি ব্যবহারের পক্ষে, তবে আপনার সরঞ্জাম (যেমন Eclipse) রিফ্যাক্টরিংয়ের মাধ্যমে অনেকগুলি ফাইল স্বয়ংক্রিয়ভাবে পরিবর্তিত হলে কী করবেন। সমস্ত পরিবর্তিত ফাইল স্বয়ংক্রিয়ভাবে লক করা উচিত? লক করা ফাইলগুলির সংখ্যা খুব দ্রুত বাড়তে পারে। লকগুলি ক্রমবর্ধমানভাবে অর্জন করা উচিত? ডেডলকগুলি কীভাবে পরিচালনা করবেন?
জর্জিও

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

এটিকে কী স্বয়ংক্রিয় করা যায় (অগ্রাধিকারগুলি সঞ্চয় করে এবং স্বয়ংক্রিয়ভাবে লক বিরোধগুলি সমাধান করে)? বা প্রতিটি বিকাশকারী সিদ্ধান্ত নেয় যে তাদের রিফ্যাক্টরিং উচ্চতর অগ্রাধিকার আছে?
জর্জিও

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

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

6

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


3
+1: কমিটমেন্ট এবং আপডেটের প্রায়শই এর অর্থ হ'ল পরিবর্তনগুলি ছোট এবং সহজেই পরিচালিত হয়, সংঘাতগুলি পরিচালনা করা সহজ করে তোলে।
Bringer128

কমিট প্রায়ই সাহায্য করবে। দুর্ভাগ্যক্রমে, আমি এটি পরিবর্তন করতে পারি না। আমাদের যোগাযোগ করতে সাহায্য করার জন্য আমি একটি সরঞ্জাম খুঁজছি।
রজার সিএস ওয়ার্নারসন

3

প্রযুক্তি সামাজিক সমস্যাগুলি সমাধান করতে পারে না। আপনার বিকাশকারীদের একে অপরের সাথে কথা বলার এবং তাদের কাজের সমন্বয় করার প্রয়োজন। 20 টি দল সহ কিছু কাঠামো এবং বিধি প্রয়োজনীয়। আপনি প্রযুক্তিগত সমাধানগুলির সাথে তাদের সমর্থন করতে চাইবেন তবে লোকেরা প্রথমে আসে।


3
তিনি 20 টিমের কথা বলেছেন, 20 টিম নয়
ইনগো

1
প্রযুক্তির জন্য +1 সামাজিক সমস্যাগুলি সমাধান করতে পারে না। তবে "20 টি দলের সাথে কিছু কাঠামো এবং নিয়ম প্রয়োজনীয় হবে" বলে উত্তরটি সম্পাদনা করুন
মার্কজে

কিছু লোক ঘুমানোর সময় অন্যরা কাজ করে। আমাদের চারটি মহাদেশে দল রয়েছে।
রজার সিএস ওয়ার্নারসন

0

আপনি notice that someone else is working on the same piece of code and talk to the first one before modifying anythingযা বলেছিলেন সে অনুযায়ী যদি আপনি চলে যান তবে আপনার একটি সংস্করণ নিয়ন্ত্রণ ব্যবস্থা (সিভিএস / এসভিএন / জিআইটি) দরকার। যদিও আমি নিশ্চিত নই, তবে আপনি যদি এটিও অন্তর্ভুক্ত করতে চান তবে আপনার কিছু উন্নত জিনিস প্রয়োজন হবে (কিছুটা ট্রিগার মেকানিজম / কিছু কাস্টম জিনিস সম্ভবত)।


আমরা গিট পেয়েছি। এর আগে আমাদের ক্লিয়ারকেস ছিল। ভিসিএস এর সমাধান নয়। আমাদের কিছু ট্রিগার প্রক্রিয়া দরকার।
রজার সিএস ওয়ার্নারসন

0

উত্স নিয়ন্ত্রণে ফাইলগুলি লক করা বিকাশকারীদের আপনার সমস্যাটি সহজেই সমাধান করা উচিত তবে আমি মনে করি আপনার আরও বড় সমস্যা হতে পারে।

৪.৫ মিলিয়ন এলওসি হ'ল একটি বিশাল স্যান্ডবক্স যা একটি ভাল আর্কিটেক্ট এবং ডিজাইনের সমাধানে খেলতে আপনার খুব কমই এমন পরিস্থিতি তৈরি হওয়া উচিত যেখানে একাধিক বিকাশকারী দল একে অপরের পায়ের আঙ্গুলের উপর পা রেখে চলেছে। ঘটনাটি কাকতালীয়ভাবে আরও বেশি ঘটেছিল তা হ'ল এমন কিছু গুরুতর সম্ভাব্য নকশার ত্রুটি যা আপনাকে দেখা উচিত।


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

0

কিছু জিনিস:

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

1. হার্ড যখন প্রতিটি দল উল্লম্বভাবে কাজ করে থাকে 2. শক্ত কারণ কিছু দল ঘুমায় যখন অন্যরা কাজ করে 3.. সমস্যাটি সমাধান করে না 4.. এখন কোথায় গিট, আগে ক্লিয়ার কেসে on
রজার সিএস ওয়ার্নারসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.