পুরাতন কোডটি উন্নত করার জন্য আমাদের কি দায়বদ্ধতা রয়েছে?


64

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

সুতরাং, এক পর্যায়ে আপনার কেবলমাত্র এটি যথেষ্ট ভাল বলা উচিত এবং এগিয়ে যাওয়া উচিত, বা আপনি যখন মনে করেন যে এটি আরও ভাল হতে পারে তখন কি আপনাকে পুরানো কোডের উন্নতি করার জন্য প্রকল্পগুলি ঠেকানোর চেষ্টা করা উচিত?


আপনি কি এটি নিজের সময়ে বা সংস্থার ডাইমে করছেন?
জেবিআর উইলকিনসন

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

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

1
ডকুমেন্টেশনের সম্ভাব্য উন্নতি সম্পর্কে কিছু মন্তব্য যুক্ত করুন এবং এটি রেখে যাবেন?
জেমস পি।

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

উত্তর:


66

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

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


4
আমি যা ভাবছিলাম তা হ'ল "সফটওয়্যার রট" এবং ব্যবহারিক প্রোগ্রামারগুলির উইন্ডো তত্ত্ব এবং সফ্টওয়্যার এনট্রপির প্রভাব। pragprog.com/the-pragmatic-programmer/extracts/software-entropy
jmq

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

11
@ জেএমকিগলি, সফ্টওয়্যারটি কেবলমাত্র তার উত্স কোড পরিবর্তন করা হলে দণ্ডায়িত হয় এবং ভাঙা উইন্ডোগুলি যদি দেখা হয় তবেই তার প্রভাব পড়ে। একটি পুরাতন কোডবেস, যদি এটি স্পর্শ করার প্রয়োজন না হয় তবে যতক্ষণ তার পরিবেশ এটির অনুমতি দেয় ততক্ষণ একইভাবে কাজ করবে।
পিয়েটার তারেক

2
এটি "উন্নত" করার প্রক্রিয়ায় কোনও কার্যকারী প্রোগ্রামে ত্রুটিটি প্রবর্তন না করার চেষ্টা করুন ;-)
রোব্রাম্বাস

4
আমি মনে করি কোড 'পচা' একটি দুর্ভাগ্যজনক রূপক। কোডটি ক্ষয় হয় না, আপনি যদি এটি কিছু না করেন তবে এটি কোনও পরিবর্তন হয় না। যদি কিছু হয়, কোডের কাজ কঠোর হয় - আপনি এনট্রপির কাজ করার সাথে সাথেই পরিচয় করিয়ে দেন এবং এটির পুনঃঅ্যাক্টর করার জন্য প্রচুর শক্তি ব্যয় করে আপনি এই এনট্রপিকে সরিয়ে ফেলতে পারেন (পুনঃনির্মাণ / ফোরজিংয়ের অনুরূপ)
জে.কে.

32

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

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

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

টিএলডিআর: প্রয়োজন অনুযায়ী রিফ্যাক্টর, কোনও বাধ্যবাধকতা নেই।


'রিফ্যাক্টরিং একটি রিগ্রেশন সৃষ্টি করে' বলতে আপনি কী বোঝাতে চেয়েছেন আপনি আরও নির্দিষ্ট হতে পারেন? আপনার সফ্টওয়্যারটির আচরণ পরিবর্তন না করে ডিজাইনের উন্নতি করার জন্য কি রিফ্যাক্টরিংয়ের উদ্দেশ্য? আপনি কি একটি উদাহরণ দিতে পারেন?
ম্যানফ্রেড

3
@ জন: হ্যাঁ, এটি রিফ্যাক্টর করার উদ্দেশ্য: কোডটি উন্নত করুন তবে আচরণটি বজায় রাখুন।
বার্নার্ড

@ জন যেকোন অ-তুচ্ছ রিফ্যাক্টরিংয়ের কারণে অনিচ্ছাকৃত আচরণের পরিবর্তন হওয়ার ঝুঁকি রয়েছে, বিশেষত যখন কোনও রেগ্রেশন টেস্ট নেই are
গ্যারেট হল

14

আপনি যা কিছু করেন তার একটি ব্যয় হয়। আপনি প্রোগ্রাম সীমিত সময় আছে। আপনি প্রোগ্রামিংয়ে যা কিছু করেন তার দিকে নজর দেওয়া উচিত, "এটি করার সুবিধা কী?" এবং "অন্য কিছু করার সুবিধা কী?"

আপনি যদি সুযোগ ব্যয়টি (অন্য কিছু করার কী খরচ?) বিবেচনা না করেন তবে মানটি নিখরচায়। আপনার কোডটি উন্নত করা ভাল। আপনি কিছু শিখবেন। এটি আরও ভাল চালানো হবে। এটি আরও বিক্রি হবে।

আসল প্রশ্নটি হল আপনার সময়টির সাথে পরবর্তী সেরা জিনিসগুলি কী করা যেতে পারে? এবং তারপরে আপনার ট্রেড অফ রয়েছে।

এটি কি আরও বেশি সফটওয়্যার বিক্রি করবে?

এটি কি কম মাথাব্যথাকে সমর্থন করে?

তুমি কী শিখবে?

এটি আরও নান্দনিকভাবে আনন্দদায়ক হয়ে উঠবে?

এটি কি আপনার খ্যাতি বাড়িয়ে তুলবে?

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

অথবা আপনি যদি আরও সহজ উত্তর চান তবে কোডটি স্থির না করা পর্যন্ত কেবল টিভি দেখা বন্ধ করুন। :-)


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

@ ایڈডিনসি - হুবহু! আপনার উদাহরণ অন্য একটি কারণ এবং সুযোগ ব্যয়কে ক্যাপচার করে।
ম্যাথট্যাক

ব্যয় (বা মান ইত্যাদি) প্রকৃতপক্ষে সঠিক উত্তরের মূলশব্দ। এটি সামগ্রিকভাবে মান যোগ করা উচিত, এটি বিবেচনা করেও যে পুরানো কোডটি স্পর্শ করা জিনিসগুলি ভেঙে ফেলতে পারে (মান সরিয়ে ফেলুন) যতই অপেক্ষাকৃত অপ্রতুল দেখায়।
ক্রেগক্স

6

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

  • কোডটি যা করার কথা তা করে না?
  • আপনি যখন সফ্টওয়্যারটি বজায় রাখছেন তখন কোডটি কি সমস্যার সৃষ্টি করে?
  • কোডটি কি সম্পূর্ণ স্বয়ংসম্পূর্ণ?
  • আপনার কি অদূর ভবিষ্যতে কোডটি আপডেট বা প্রতিস্থাপনের পরিকল্পনা আছে?
  • এমন কোনও ধরণের ব্যবসায়ের কেস রয়েছে যা আপনি যে কোডটি উদ্বিগ্ন তা আপডেট করার জন্য?

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

আমরা এখানে সত্যই যে বিষয়ে কথা বলছি তা হ'ল কোডটি যা আপনাকে বিরক্ত করে তা রক্ষণাবেক্ষণ করা সহজ বা কঠিন এবং সময় পার হওয়ার সাথে সাথে এই রক্ষণাবেক্ষণটি কত ব্যয়বহুল। এটি প্রযুক্তিগত tণ সম্পর্কে মূলত একটি প্রশ্ন এবং এখনই কিছুটা শল্য চিকিত্সা রক্ষণাবেক্ষণ করে payingণ পরিশোধ করা উপযুক্ত কিনা, বা theণটি এতটা ছোট যে আপনি এটি কিছুক্ষণের জন্য স্লাইড করতে পারবেন কিনা।

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


5

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

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

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

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

সুতরাং, এটি ঠিক করার কোনও দায়বদ্ধতা নয়, তবে সেই পুরানো জিনিসগুলি সত্যই কার্যকর হতে পারে। এবং ইউনিট পরীক্ষা এবং সিআই আপনার বন্ধু!


4
কোনও নবাবীকে খারাপ কোড দেওয়া প্রকল্প পরিচালনার সবচেয়ে খারাপ বিরোধী-প্যাটার্ন , তারা এটি দেখে এবং এটি সঠিক বলে মনে করে এবং এটির সদৃশ করে,

1
@ জারোদরবার্সন আমাকে আরও স্পষ্ট করে দেখা উচিত ছিল তা নির্দেশ করার জন্য ধন্যবাদ; আমি আমার উত্তরটি সম্পাদনা করে নোট করেছি যে আমি একটি বিশেষভাবে শেখার অভিজ্ঞতার অংশ হিসাবে এটি করেছি এবং তারা একজন পরামর্শদাতার সাথে কাজ করছে। এটি কোনও গভীর-শেষ পরিস্থিতি নয়।
jcmeloni

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

1
কোড পর্যালোচনাগুলি খারাপ কোডটিকে সংস্করণ নিয়ন্ত্রণে প্রবেশ করা থেকে বিরত করার জন্য, সত্যের পরে দুর্বল কোড সনাক্তকরণের জন্য নয়, এটি পরে দেরি করার উপায়।

@ জারোদরবারসন আমার অস্পষ্টতা এবং দুর্ভাগ্যক্রমে সম্ভাব্য বিভ্রান্তিকর ভাষা নিয়ে আপনার যে সমস্যাগুলি রয়েছে সেগুলি নির্দেশ করার জন্য আপনাকে ধন্যবাদ; আমি আরও সম্পাদনা করেছি এবং এখন যা আছে তার পাশে দাঁড়িয়ে আছি।
jcmeloni

2

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

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


4
আমি যুক্ত করব "এবং যদি এটি পরিবর্তন করা হয় তবে পরিকল্পিত সময়সূচিতে অনেক সময় যোগ হবে না"
এইচএলজিইএম

2

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

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


2

আমার পক্ষে, প্রশ্নটি পুনঃব্যবসায়িত ও সাধারণীকরণ করা যেতে পারে: "কোডের এই কংক্রিট অংশটি যদি ঠিকঠাক কাজ করে তবে কারও অতিরিক্ত সংস্থান (সময়, অর্থ, মানসিক ইত্যাদি) ব্যয় করা উচিত? এটি কি সংস্থান (গুলি) এর অপচয় নয়? ? "

প্রতিবার যখনই আমি কোনও উত্তরাধিকারের কোডটি পাই, আমি বেশ কয়েকটি বিষয়কে গুরুত্বপূর্ণ মনে করি যা সম্পর্কে মনে করি।

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

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

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


2

মাইক্রোসফ্ট উইন্ডো আপডেট করা প্রয়োজন? সমস্ত * নিক্স ডিস্ট্রোগুলিকে কি বিকশিত হতে হবে? বা এর আরও ব্যবহারিক উদাহরণ এখনও কি কেউ 1970 এর গাড়ি চালায়?


1

আপনি সাধারণত দ্বিতীয়বারের মতো আরও ভাল কোড লিখতে পারেন, আপনি ডোমেনটি সম্পর্কে প্রাথমিকভাবে লিখে আরও শিখতে পারেন।

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

পার্শ্ব নোট হিসাবে আমি ইউনিট পরীক্ষার দৃ strongly়ভাবে সমর্থন করব। আপনার যদি বর্তমান আচরণ স্বচ্ছায়িত বিশ্রামগুলির সাথে স্পষ্টভাবে চিহ্নিত করা না থাকে তবে বিশেষ করে রেফার্যাকচারিং করা খুব সহজ।


1

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

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

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

আমি আশা করি এটি সাহায্য করবে


1

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


1

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

নতুন কোড লেখার পরিবর্তে বা অন্য কোনও কোডের টুকরো পুনরায় লেখার পরিবর্তে আপনার সংস্থাকে এই কোডটি পুনরায় লেখার জন্য কেন সময় দিতে ব্যয় করতে হবে?

সুযোগ যেমন উপস্থাপিত হয় তেমনি আপনার উন্নতি করা উচিত, তবে সুযোগের অর্থ হল আপনি কোডটিতে ইতিমধ্যে কাজ করছেন, অথবা আপনি কোনও ব্যবসায়ের কারণ পরিবর্তন করেছেন enti

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

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


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

@ মারজানভেনেমা: যখন উন্নয়ন বন্ধ হয়ে যায় তখন সমস্ত শাখা একরকম হওয়া উচিত। আপনি যদি পরে এমন কিছু দেখতে পান যা উন্নত করা যেতে পারে তবে উন্নত হতে পারে না, এটি উন্নয়নের শাখায় উন্নত করুন এবং এটি পুনরায় বিকাশের জন্য অপেক্ষা করতে এবং একটি নতুন ধাক্কা তৈরি হওয়ার জন্য সেখানে রেখে যান।
jmoreno

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

@ মারজানভেনেমা: সম্ভবত আমার উচিত ছিল এটি অবিলম্বে উত্পাদনের দিকে ধাক্কা দেওয়ার উদ্দেশ্য। আপনি যদি ইতিবাচক হন যে পরিবর্তনটি কখনই উত্সাহিত হতে পারে না, তবে পরিবর্তনটি করবেন না। যদি OTOH, আপনি অনিশ্চিত, তবে পরিবর্তনটি সহজেই হয়ে যায় এবং আপনি ইতিমধ্যে সেখানে আছেন ... পরিবর্তন করুন। ট্র্যাকিং এবং পরীক্ষার জন্য, এটি "প্রয়োজন অনুসারে পর্যালোচনা" দ্বারা আচ্ছাদিত বোঝানো হয়েছিল।
jmoreno

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

1

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

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

চাচা বব মার্টিন যেমন বলেছিলেন, "আপনি যতটা খুঁজে পেয়েছেন তার চেয়ে ক্যাম্পগ্রাউন্ড ক্লিনারটি সর্বদা ছেড়ে যান।"


1

আপনার কোম্পানির পরিচালনা জিজ্ঞাসা করার জন্য এটি একটি প্রশ্ন।

আপনার কাছে ফিরে যেতে এবং পুরানো কোডটিতে পরিবর্তন করার জন্য প্রয়োজনীয় সময় এবং সংস্থান রয়েছে?

এটি ভেঙে পড়েছে না তা নিশ্চিত করার জন্য আপনার কি কিউএ টিম টেস্ট করার সময় এবং সংস্থান রয়েছে?

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


0

এটা নির্ভর করে.

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

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

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