কোনও সহ-প্রোগ্রামার দ্বারা সম্পন্ন করা হবে এমন একটি এখনও-বাস্তবায়িত পদ্ধতিটি কীভাবে মোকাবেলা করবেন?


45

এটি দলে কীভাবে কাজ করা যায় সে সম্পর্কে একটি প্রশ্ন।

সম্প্রতি আমি আমার প্রথম বৃহত্তর (classes 80 ক্লাস, জাভা) প্রোগ্রামিং প্রকল্পে 6 জনের একটি দল নিয়ে কাজ করেছি, যদিও আমাদের মধ্যে কেবল 4 জনই ধারাবাহিকভাবে কোডটিতে কাজ করছিলেন। আমরা কাজটি প্রাথমিক পর্যায়ে করার জন্য বিতরণ করেছি এবং এক পর্যায়ে আমাকে এমন একটি পদ্ধতি কল করতে হয়েছিল যা এখনও আমার সহ-প্রোগ্রামারদের দ্বারা প্রয়োগ করা হয়নি। এটি মোকাবেলার প্রস্তাবিত উপায় কীভাবে?

বিকল্পগুলি আমি দেখেছি, যদিও আমি সেগুলির মধ্যে সত্যই পছন্দ করি না:

  1. নিজেকে //TODOলিখতে এবং পরে এই পদ্ধতিটি প্রয়োগ করা হয়েছে কিনা তা পরীক্ষা করার জন্য এই কোডের লাইনটি আবার পর্যালোচনা করুন।

  2. সংশ্লিষ্ট টিম সদস্যকে এখনই এটি বাস্তবায়নের জন্য অনুরোধ করছি ।

  3. কী এখনও প্রয়োগ করা হয়নি তার স্পষ্ট বিবরণ সহ একটি কাস্টম রানটাইম এক্সেপশন নিক্ষেপ করা। (অন্ততঃ কী নিখোঁজ রয়েছে তা জানতে আমাদের দীর্ঘ সময় অনুসন্ধান করতে হবে না)

  4. তাদের ক্লাসে প্রয়োজনীয় পদ্ধতি যুক্ত করা এবং //TODOবার্তার শৃঙ্খলে তাদের একটি লেখা , সম্ভবত তাদের সেই পরিবর্তন সম্পর্কে একটি দ্রুত বার্তা প্রেরণ করুন। (এখন এটি আর আমার সমস্যা নয়, তবে তারা যদি এই সময়ের মধ্যে এই পদ্ধতিতে কাজ করে তবে এটি বিরক্তিকর মার্জ সংঘাত সৃষ্টি করতে পারে)

  5. কাজটি করে এমন কোডটি লেখার আগে সমস্ত কিছুর জন্য বিমূর্ত ক্লাস বা ইন্টারফেস সংজ্ঞা দেওয়া। (খুব ভাল কাজ হয়নি কারণ এই ইন্টারফেসগুলি প্রায়শই পরিবর্তিত হয়েছিল)


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

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

15
@ ডেভিডপ্যাকার আপনি যা বর্ণনা করেন তা হ'ল সমস্যাটি সমাধান করার একমাত্র উপায় নয়। উল্লম্ব টুকরা, ঘন ঘন সংহতকরণ, ছোট বৈশিষ্ট্যগুলি পৃথক অংশে কাজ করা প্রতিটি ব্যক্তির সাথে অনুভূমিক টুকরোগুলির চেয়ে আরও ভাল সমাধান solutions
ইউফোরিক

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

2
তিনি কীভাবে এটি পরিচালনা করতে চান তার সাথে কথা বলার কী আছে ?
আগুনজু

উত্তর:


5

এটি একটি আকর্ষণীয় প্রশ্ন এবং উত্তরটি আপনার ভাবার চেয়ে সহজ হতে পারে।

সোজা কথায়, এমন পরীক্ষা লিখুন যা আপনার অনুমানগুলি বৈধ করে তোলে। আপনি বাস্তবায়ন বা আপনার সহকর্মী প্রোগ্রামারগুলি করেন কিনা তা বিবেচ্য নয়

দীর্ঘ উত্তর।

আপনার তালিকার তালিকাভুক্ত যে কোনও বিকল্প কিছুটা প্যাসিভ এবং আপনার ফিরে আসতে হবে এবং শীঘ্রই বা পরে কোডটি (যদি কোনও উপস্থিত থাকে) পুনরায় দেখা দরকার।

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

পর্যাপ্ত পর্যায়ে পরীক্ষার জন্য আমি আপনাকে দুটি শাখার দিকে নজর দিতে পরামর্শ দেব।

  1. টিডিডি - পরীক্ষা-চালিত বিকাশ - এটি নিশ্চিত করবে যে আপনি নিজের উদ্দেশ্যটি বর্ণনা করেছেন এবং এটির পর্যাপ্ত পরীক্ষা করেছেন। এটি আপনাকে উপহাস বা জাল পদ্ধতি এবং ক্লাসগুলি (ইন্টারফেস ব্যবহার করেও) প্রয়োগ করার সম্ভাবনা দেয় যা এখনও কার্যকর হয়নি। কোড এবং পরীক্ষাগুলি এখনও সংকলন করবে এবং আপনাকে আপনার সহকর্মী প্রোগ্রামারদের কোডকে বিচ্ছিন্ন করে নিজের কোড পরীক্ষা করার অনুমতি দেবে। (দেখুন: https://en.wikedia.org/wiki/Test-driven_de વિકાસment )

  2. এটিডিডি - গ্রহণযোগ্যতা পরীক্ষা-চালিত বিকাশ - এটি একটি বাহ্যিক লুপ তৈরি করবে (টিডিডি লুপের চারপাশে) যা আপনাকে পুরো বৈশিষ্ট্যটি পরীক্ষা করতে সহায়তা করে। পুরো বৈশিষ্ট্যটি বাস্তবায়িত হলে এই পরীক্ষাগুলি কেবল সবুজ হয়ে যাবে, যখন আপনার বন্ধুরা তাদের কাজ শেষ করে তখন আপনাকে একটি স্বয়ংক্রিয় সূচক দেয়। আপনি আমাকে জিজ্ঞাসা যদি বেশ ঝরঝরে।

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

এটি আপনাকে আপনার কোডটি একটি ধারাবাহিক সংহত পাইপলাইনে রাখার অনুমতি দেয় এবং একটি অত্যন্ত নির্ভরযোগ্য বাস্তবায়ন উত্পাদন করে।

আপনি যদি এই বিষয়ে আরও কিছু পেতে চান তবে নীচের লিঙ্কগুলি দেখুন:


103

স্টাব জিজ্ঞাসা করুন।

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


25
এই। আপনি যদি সঠিকভাবে ইন্টারফেস ব্যবহার করেন তবে অন্য লোকটি সেগুলি লেখা না হওয়া পর্যন্ত আপনার প্রয়োগের প্রয়োজন হবে না।
রবার্ট হার্ভে

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

1
এটি লজ্জার বিষয় যে জাভাতে শিরোনাম ফাইল নেই। সি / সি ++ বিশ্বে আপনি আপনার API গুলি তৈরি করতে পারেন এবং আপনার সমস্ত শিরোনাম প্রথমে লিখতে পারেন, বাস্তবায়নের অভাব লিঙ্কারের জন্য একটি সমস্যা হয়ে দাঁড়ায়। (সামান্য সরলকরণ, এটি কেবল একটি লিঙ্কারের বিষয় হওয়ার জন্য এবিআইকে স্থির থাকতে হবে)।
ওয়েস টোলম্যান

16
@ ওয়েজটোলম্যান অ্যামেজিংলি, জাভা সম্পর্কে আমার প্রিয় জিনিসগুলির মধ্যে এটিতে শিরোনামের ফাইল নেই। রবার্ট এবং কর্সিকা যে "ইন্টারফেসগুলি" উল্লেখ করেছেন সেই ভূমিকাটি পুরোপুরি পূরণ করে। আপনি প্রথমে আপনার API গুলি তৈরি করেন, ইন্টারফেসগুলি লিখুন এবং কংক্রিটের প্রয়োগের অভাব সংকলকটির জন্য সমস্যা নয়।
গ্র্যান্ডওপেনার

1
@ ওয়েসটোলম্যান এটি কি আপনার পক্ষে ভাল কাজ করে? আমার কানে যা জল-পতনের স্টাইলের মতো অনেকটা নরক শোনায় এবং আমার ধারণা হ'ল আপনি যখন এই "গুরুত্বপূর্ণ পরামিতিটি" মিস করেছেন তা বুঝতে পেরে আপনাকে আরও ইন্টারফেসটি আপডেট করতে হবে?
নেটিগার

6

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

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


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