দ্রুত প্রোটোটাইপিং এবং রিফ্যাক্টরিং


9

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

সুতরাং আমার উন্নয়ন প্রক্রিয়াটি এরকম হয়:

  • পদ্ধতির কোনও সুযোগ আছে কিনা তা দেখতে একটি টুকরো কোড লিখুন। (পদ্ধতির যত অনিশ্চিত হয় ততই কোডটি কৃপণ হয়)
  • এটি যদি কাজ করে তবে এটি সুন্দর হওয়া পর্যন্ত অনেকগুলি রিফ্যাক্টর

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

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


এটি ক্লিন কোড 2 এ পুনরাবৃত্ত বিকাশের মাধ্যম হিসাবে উল্লেখ করা হয়েছে ... আপনি সেই বইটিতে বিশ্বাস রাখেন বা না থাকুন আপনার হাতে।
রিগ

উত্তর:


11

চটজলদিয়ের সাথে এর কোনও যোগসূত্র নেই, তবে লোকে এক ধরণের ধারণা ধরে নেয় কারণ তারা এটাকে ফুলে বলে মনে করেন; একটি হিপ্পু কমুনে মাথাবিহীন মুরগির বিকাশ।

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

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

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

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

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


2

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

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

সঙ্গে লেনদেন প্রকল্পের আন-পরিচিত টুকরা উচ্চ পর্যায়ের নকশা সঙ্গে পরিচিত প্রয়োজনীয়তা জমায়েত দিয়ে শুরু হয়। একবার আপনি বেশিরভাগ উপাদান হাতে পেয়ে গেলে, আপনি সঠিক সমাধানটি অনুসন্ধান করতে পারেন। এটি বলেছিল, পূর্ণ-বিকাশের উন্নয়নের আগে ছোট্ট প্রুফ-অফ-কনসেপ্ট তৈরি করা আমাদের টিম অনুসরণ করে।

SOLID নামে একটি সফ্টওয়্যার বিকাশের নীতি রয়েছে । আমার অভিজ্ঞতায়, সমস্যাগুলি / সমস্যাগুলিতে সেগুলি প্রয়োগ করা আপনার প্রকল্পের কোড বেস উন্নত করার ক্ষেত্রে সর্বদা এক ধাপ।


2

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

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

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

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

তাত্পর্যপূর্ণ বিষয়টি হ'ল, কার্যকরী বৈশিষ্টটি বুলেট পয়েন্টগুলির একটি তালিকা হতে পারে, এবং প্রযুক্তিগত ধারণাটি সাধারণত একটি মডেল হয়ে উঠবে, যার মধ্যে কিছু বুলেট পয়েন্ট এবং প্রযুক্তি স্টিয়ার রয়েছে, সম্ভবত কিছু ক্ষেত্রে মাত্র 3 বা 4 পৃষ্ঠার।

চতুর প্রকল্প চালানোর সময়ও আমরা ডকুমেন্টেশন তৈরি করি:

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

আপনি দেখতে পান যে আমাদের চতুর প্রক্রিয়ায় একটি ছোট জলপ্রপাত রয়েছে।

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

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


1

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

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