অর্ধেক বৈশিষ্ট্য বাস্তবায়নের জন্য আমি কীভাবে সঠিক পদ্ধতিটি শিখব? [বন্ধ]


12

আমি একটি উন্নয়ন দলকে নেতৃত্ব দিচ্ছি এবং আমি যতবার সম্ভব আমাদের পণ্যটি মুক্তি দিতে চাই (ধারাবাহিক বিতরণ)।

অনেক ক্ষেত্রে, আমাদের এমন একটি বৈশিষ্ট্য প্রয়োগ করতে হবে যা প্রকাশের মধ্যে সময়ের চেয়ে কার্যকর করতে আরও বেশি সময় নেয়। আমি এখনও চাই যে লোকেরা তাদের কোডটি দৈনিক ভিত্তিতে (ধারাবাহিক একীকরণ) করে commit

অনেক সময় নতুন বৈশিষ্ট্য প্রয়োগের ক্ষেত্রে বিদ্যমান বৈশিষ্ট্যটি পরিবর্তন করা প্রয়োজন এবং নতুন বৈশিষ্ট্যটি এখনও শেষ না হওয়া সত্ত্বেও বিদ্যমান বৈশিষ্ট্যগুলি অবশ্যই কাজ করা দরকার।

যদি বিকাশকারী সঠিক পদ্ধতির ব্যবহার করে তবে তারা বিদ্যমান বৈশিষ্ট্যগুলি সাবধানতার সাথে সামঞ্জস্য করতে পারে এবং উপরের সমস্ত কিছুই সমস্যা নয়।

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

সুতরাং যে প্রশ্ন। আমি কীভাবে নিশ্চিত করব যে টিম সদস্যরা অর্ধেক বৈশিষ্ট্যটি বাস্তবায়নের জন্য সঠিক পদ্ধতিটি শিখবেন?

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


"বিদ্যমান বৈশিষ্ট্যগুলি অবশ্যই, এখনও কাজ করা দরকার" - প্রসঙ্গের উপর নির্ভর করে, এই জাতীয় প্রয়োজনের জন্য পদটি পিছনে সামঞ্জস্যতা বা রিগ্রেশন বাগগুলির অনুপস্থিতি
gnat


1
বিভিন্ন ধরণের স্বয়ংক্রিয় পরীক্ষার কোড পরিবর্তনের ক্ষেত্রে ত্রুটির ঝুঁকি হ্রাস করতে পারে। পরীক্ষা করে দেখুন। আমি এমন বিকাশকারী হিসাবে ব্যবহারের পদ্ধতির সন্ধান করছি যা একটি বৃহত বৈশিষ্ট্য প্রয়োগ করতে হবে যা বিদ্যমান কোডে 75% পরিবর্তন এবং 26% নতুন কোড জড়িত থাকতে পারে (অতিরিক্ত রহস্যের জন্য অতিরিক্ত শতাংশ রয়েছে)।
নীলস ব্রিঞ্চ

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

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

উত্তর:


14

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

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

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

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

এমন দুটি সরঞ্জাম রয়েছে যা আমি পরিচিত যা এই ধরণের প্রক্রিয়াগুলিকে ভালভাবে সমর্থন করে। আপনার বিকাশের কাঠামো যদি সহজ হয় তবে গিট-প্রবাহ সহ গিট একটি ভাল শাখা কাঠামো প্রয়োগ করে যা ছোট থেকে মাঝারি আকারের টিমে (সম্ভবত 20 বিকাশকারী) ভালভাবে কাজ করে।

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


আপনি যে শাখার কৌশলটি উল্লেখ করছেন সে সম্পর্কে আরও জানতে আগ্রহী হব। আপনার কাছে কোনও নিবন্ধ বা অন্য কোনও কিছুর লিঙ্ক রয়েছে যা আপনি যে ধারণাটি উল্লেখ করছেন সেটি আরও গভীরতার ব্যাখ্যা করে?
নীলস ব্রিঞ্চ

2
গিট প্রবাহের জন্য এখানে এনভিie.com/posts/a-successful-git-branching- মডেল
মাইকেল শ

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

6

এখানে দুটি সমস্যা রয়েছে: একটি অর্ধেক বৈশিষ্ট্য প্রয়োগ করছে; অপরটি অবিরত বিকাশের সময় শিপিং পণ্যকে কাজ করে চলেছে।

অর্ধেক বৈশিষ্ট্য প্রয়োগ করা হচ্ছে

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

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

শিপিং পণ্য কাজ করে রাখা

এখানে কয়েকটি মুষ্টিমেয় বিকল্প রয়েছে:

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

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


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

2
এইখানেই ভাল পরীক্ষাগুলি আসে If যদি আপনার কোড বেসের জন্য উপযুক্ত কভারেজ না থাকে, সম্ভবত এই প্রচেষ্টাটির জন্য এটি ট্রিগার হতে পারে?
অ্যালেক্স ফেনম্যান

তবে আমার প্রশ্নের উত্তর কি কেবল "ভাল কোড অনুশীলন করা এবং ইউনিট পরীক্ষা করা" ইত্যাদি হতে পারে ...?
নীলস ব্রিঞ্চ

1

আমি কীভাবে নিশ্চিত করব যে টিম সদস্যরা অর্ধেক বৈশিষ্ট্যটি বাস্তবায়নের জন্য সঠিক পদ্ধতিটি শিখবেন?

তাদের পড়াতে। (Duh)

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

দল হিসাবে পর্যালোচনা করা প্রত্যেককে আপনি ইতিমধ্যে স্বজ্ঞাতভাবে কী জানেন তা জানতে সহায়তা করবে।


আমি পুরোপুরি এই সঙ্গে বোর্ডে আছি। তবে ঠিক যেমন আমি কাউকে ইউনিট টেস্টগুলি কীভাবে শেখাতে পারি বা তাদের "ইউনিট টেস্টিংয়ের শিল্প" বইটি পড়তে শেখাতে পারি - এই বিষয়ের জন্য আমি কি একই জাতীয় উত্স উল্লেখ করতে পারি?
নীলস ব্রিঞ্চ

1

এখানে সবচেয়ে বড় জিনিস যা আপনাকে এখানে সহায়তা করবে তা হ'ল উদ্বেগের একটি ভাল বিভাজন রয়েছে যাতে যতদূর সম্ভব কোডের একটি ক্ষেত্র অন্য অঞ্চলে হস্তক্ষেপ না করে।

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

আসলে এই কনফিগারেশন পদ্ধতির মার্টিন ফোলার ফিচার টগল হিসাবে বর্ণনা করেছেন

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


আমি এই ধারণার অধীনে রয়েছি যে সমস্ত কোডকে একই শাখায় প্রতিশ্রুতিবদ্ধ করা এবং আমার সমস্ত কোড সর্বদা নিযুক্ত করা একটানা সংহতকরণের একটি ভাল কৌশলটির অংশ?
নীলস ব্রিঞ্চ

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

দুটি প্রতিযোগিতামূলক কৌশল বলে মনে হচ্ছে, যেখানে একজনের একক প্রধান শাখা এবং অন্যটির প্রতিটি কাজের জন্য একটি শাখা এবং প্রচুর সংশ্লেষ রয়েছে ... আমি নিশ্চিত না সেরা কি বা সঠিক - বা এটি আমার প্রশ্নের মূলটিকে আঘাত করে কিনা।
নীলস ব্রিঞ্চ

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