উত্তরাধিকারের কোড হস্তান্তরিত হলে আপনি কীভাবে আপনার নিজের কোডিং পক্ষপাতগুলি কাটিয়ে উঠবেন? [বন্ধ]


22

প্রোগ্রামার হিসাবে, আমরা প্রায়শই আমাদের দক্ষতায় অবিশ্বাস্য গর্ব করি এবং 'ভাল' কোড এবং 'খারাপ' কোড কী তা সম্পর্কে খুব দৃ strong় মতামত রাখি।

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

অন্য প্রোগ্রামারের কাজের আশেপাশে মাথা পেতে চেষ্টা করার সময় আপনি কীভাবে নিজেকে মানসিকভাবে প্রস্তুত করেন?


2
বাহ ... এই প্রশ্নটি এখনই আমার কাছে প্রাসঙ্গিক।
ওয়াল্টারজে 89

1
যদি এটি না ভেঙে যায় তবে এটি ঠিক করবেন না। :-)
সমৃদ্ধ

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

উত্তর:


31

যে কোনও লিগ্যাসি কোড বেসের জন্য, নিজেকে মোকাবেলা করার জন্য নিজেকে মানসিকভাবে প্রস্তুত করার সঠিক উপায়টি এর জন্য ইউনিট পরীক্ষাগুলি লিখে শুরু করা

এটি চুষে বা না যায়, আপনার প্রথমে স্টাফ না ভাঙিয়ে এটি পরিবর্তন করতে সক্ষম হওয়ার আত্মবিশ্বাস থাকা দরকার!


6
+1 টি। অন্যান্য প্রোগ্রামগুলি প্রায়শই বিদ্যমান কোডে থাকা বাগগুলিতে নির্ভর করে , এর কাজ করার অদ্ভুত পদ্ধতিগুলিকে কখনও মনে করবেন না। আপনি এটি নিয়ে চটকাতে যাওয়ার আগে এটি বুঝতে পারেন!
অ্যালেক্স ফেনম্যান

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

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

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

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

30

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


3
আমার সাথে কয়েকবার হয়েছে। কখনও কখনও এটি একা রেখে যাওয়া আরও ভাল
TheLQ

4
এবং যদি আপনি এটি খুঁজে বের করেন তবে পরের লোকটির সাথে দয়া করুন এবং একটি মন্তব্য লিখুন!
ফ্রাঙ্ক শায়ারার

11

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

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

এবং সর্বশেষে, বুঝতে পারেন যে এই কারণেই আপনার একটি কাজ রয়েছে।


4
আমার জন্য সব সময় হয়। আমি ক্রমাগত পুরানো কোডটি ফিরে দেখছি এবং নিজের কাছেই ভাবছি: "এই বকাবকিটি কে লিখেছেন? ওহ হ্যাঁ .. আমি করেছি।" আমি মনে করি এটি দেখায় যে আপনি প্রোগ্রামার হিসাবে বৃদ্ধি পাচ্ছেন যদি আপনি স্বীকার করতে পারেন যে অতীতে আপনার লেখা কিছু কোডটি খারাপ। যদি আপনি এটির দিকে ফিরে তাকান এবং "হ্যাঁ, আমার কাছে ভাল লাগছে" বলে থাকেন, হয় এটি খুব ভাল কোড, অথবা আপনি অগ্রগতি করছেন না। : পি
জাসারিন

7

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

যদি এটি সত্যিই খারাপ হয় তবে দেখুন আপনি এটি পুনরায় লেখার জন্য কেস করতে পারেন কিনা .. এটি গুরুত্বপূর্ণ না হলে কেবল প্রবেশ করুন এবং বেরিয়ে আসুন।


7

আপনার যুদ্ধ চয়ন করুন। "আমি এটি এভাবে লিখব না" এবং "এটি একটি গুরুতর রক্ষণাবেক্ষণ বা সমর্থন চ্যালেঞ্জ তৈরি করে" এর মধ্যে পার্থক্যটি জানুন


আমি এই উত্তর চুরি করব। :-)
ধামা ধরা

4

আসল দেবগণ কী ভাল বলে মনে করেছিলেন সে সম্পর্কে অনুভূতি পেতে প্রায়শই আমি দরকারী বলে মনে করি।

তারা কী করেছিল তার নিদর্শন এবং থিমগুলি সন্ধান করুন এবং অনেক সময় আপনি দেখতে পান যে প্রথম স্থানে কিছু অদ্ভুত সিদ্ধান্তের কারণ ছিল।

কখনও কখনও আপনি দেখতে পান যে আসল দেবটি আসলে খারাপ ছিল তবে তারা কী ধরণের খারাপ বিক্রি করেছিল সে সম্পর্কে আপনার ধারণা রয়েছে।

যেভাবেই হোক না কেন, এটি করার পরে আপনার কোথায় আরও পুনরায় লেখার শুরু হতে পারে বা দ্রুত সমাধানের সাথে সবকিছুকে রিফ্যাক্টর না করে দেখতে দেখতে আরও ভাল চিত্র থাকা উচিত should

সর্বাধিক গুরুত্বপূর্ণ, অবিলম্বে এটি কুৎসিত কারণ এটি অনুমান করবেন না। কিছুই আপনাকে আরও বোকা দেখায় না যে কোনও কিছু আধুনিক করার জন্য সময় ব্যয় করা কেবল এটির চেয়ে খুঁজে পাওয়া যায় যে এটি আসলের চেয়ে কম সক্ষম।


3

আমার কাছে যদি সময় থাকে তবে আমি এটি আক্রমণ করব এবং খারাপ লিখিত কোডটি মেরে ফেলছি।

এটা যুদ্ধ.


3

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

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


3

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


আহ, বয়স বয়সী প্রশ্ন কেন ...

1

অতীতে যখন আমার অন্যের কোডটি অনুভব করার এবং এটি "আমার" স্টাইলে প্রহার করার সময় ছিল না, তখন আমাকে খুব টাস্ক-চালিত হওয়ার অবলম্বন করতে হয়েছিল:

আমি এই কোড / সংশোধন / কাজ করতে কী যুক্ত করার চেষ্টা করছি?

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

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


1

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

আমাকে ভুল করবেন না ... রিফ্যাক্টর কোডের বৈধ কারণ রয়েছে, তবে যদি কোনও ব্যবসা যদি কোডটির কাজ করার দাবি করে এবং আপনি ঝাঁপ দেওয়ার আগে পরিণতি না জেনে এটি "সমাধান" করেন, তবে আপনি আঘাতের একটি বিশ্ব চাইছেন ।


1

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


0

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

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

আমার জন্য এটি ভাবতে সহায়তা করে যে আমি যখন 12 মাসের মধ্যে ফিরে আসি তখন আমার কোডটি আমার কাছে একই দেখাবে


0

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

এখানে সত্যিকারের খারাপ কোডের কিছু চিহ্নিতকারী রয়েছে:

  • যুক্তিগুলির বৃহত ব্লকগুলি রিফ্যাক্টরের পরিবর্তে সদৃশ হয়েছে।
  • ক্লাস বা প্যাকেজগুলির মধ্যে বিজ্ঞপ্তি নির্ভরতা
  • উচ্চ মিলন; কম সংহতি
  • অব্যবহৃত ভেরিয়েবল, এমন ভেরিয়েবলগুলিতে লেখা যা কখনও পঠিত হয় না, অ্যাক্সেসযোগ্য কোড।
  • স্ট্যান্ডার্ড লাইব্রেরি ফাংশনগুলির পুনরায় বাস্তবায়ন, যেমন তারিখের বিন্যাস।
  • অযথা জটিল যুক্তি; অর্থাত্ 50 টি কোডের লাইন যেখানে 10 দুর্দান্তভাবে করবে।
  • ক্লাস বা পদ্ধতির উদ্দেশ্য সম্পর্কে কোনও মন্তব্য নেই।
  • বিভ্রান্তিকর মন্তব্য।

স্বয়ংক্রিয় পরীক্ষার অভাবের অর্থ কোডটি খারাপ নয়, তবে এর অর্থ প্রকল্প খারাপ।

এগুলি স্বাদের বিষয় নয়; এই অনুশীলনগুলি প্রোগ্রাম রক্ষণাবেক্ষণকে আরও ব্যয়বহুল করে তোলে।

কীভাবে নিজেকে প্রস্তুত করবেন?

নতুন কোড বেসে সাফল্যের সাথে কাজ করতে সক্ষম হতে কিছুটা সময় নেয় এই বিষয়টিটি গ্রহণ করুন। যদি এটি "পুরোপুরি রক্ষণাবেক্ষণযোগ্য" এবং উচ্চ পরীক্ষার কভারেজ থাকে তবে এটি কম সময় নেয় তবে এটি তত্ক্ষণাত্ ঘটবে না। কোডটি যদি খারাপ হয়, তবে আমি প্রথমে কাজটি হ'ল স্টেকহোল্ডકોને সতর্ক করে দিচ্ছি যে এটি খারাপ অবস্থায় আছে এবং প্রাথমিক অগ্রগতি ধীর হবে। যদি তারা সন্দেহবাদী হয়, তবে আমি প্রকৃত কোডে সমস্যার নমুনা দেখিয়ে এবং শিল্পের সর্বোত্তম অনুশীলনের থেকে কীভাবে তারতম্য হয় তা ব্যাখ্যা করে আমি আমার দাবিটি ব্যাক আপ করি।

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