প্রাক-বিদ্যমান খারাপ অভ্যাসগুলি বা পুরানো কোডের সাথে উপযুক্ত নয় এমন ভাল অভ্যাসগুলি ব্যবহার করা কি ভাল?


25

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

আমার কাছে তাদের নকশার স্টাইলে নতুন টেবিল তৈরি করার বিকল্প ছিল (যার মধ্যে প্রায় সমস্ত প্রপেইটি একটি বড় টেবিলের মধ্যে রয়েছে), বা সম্পূর্ণরূপে একটি নতুন টেবিলের সেট তৈরি করা এবং নতুন এবং এর মধ্যে ডেটা সিঙ্ক্রোনাইজ করার জন্য ট্রাইগারগুলির মতো অতিরিক্ত কিছু ব্যবহার করা পুরানো টেবিল

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

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



ধন্যবাদ পিটার, এই প্রশ্নটি দেখেনি। এটি আমি যা জিজ্ঞাসা করছি তার সাথে এটি খুব মিল, উত্তরগুলি বিদ্যমান কোডটি রিফ্যাক্টরের সাথে সম্পর্কিত বলে মনে হচ্ছে, বিদ্যমান খারাপ কোডটিতে যোগ না করে। আমি বিদ্যমান কোডটি রিফ্যাক্টর করতে পারি না, আমি কেবল এটিতে তৈরি করতে পারি।
রাহেল

আপনি আপনার বর্তমান নিয়োগকর্তার সাথে কতক্ষণ থাকতে চান তার উপর নির্ভর করে;)
চাকরী

উত্তর:


21

আপনার আরও ভাল ডিজাইন বেছে নেওয়া উচিত যদি:

  1. আপনি ভবিষ্যতের কোডিংয়ের একটি বড় অংশ গ্রহণ করবেন

  2. দীর্ঘকালীন ক্লায়েন্টের কাছে আরও ভাল ডিজাইন বেশি ব্যয়বহুল নয়। উদাহরণস্বরূপ, আমি বছরের শেষে বন্ধ হয়ে যাওয়া প্রকল্পগুলির জন্য বহু-মাসের "রিফ্যাক্টরিং" প্রত্যক্ষ করেছি।

আপনার যদি "একই খারাপ স্টাইল" বেছে নেওয়া উচিত তবে:

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

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


খারাপ ডিজাইনের চেয়ে ভাল ডিজাইনের সাথে কখন যেতে হবে তার দুর্দান্ত উদাহরণ এবং বিপরীতে, ধন্যবাদ :)
রাচেল

11

দীর্ঘমেয়াদে, ভাল অভ্যাসগুলি ব্যবহার করা ভাল। এটি সময় এবং প্রচেষ্টা সাশ্রয় করবে কারণ পরিবর্তনগুলি প্রয়োগ করতে কম সময় লাগবে।

যদি সম্ভব হয় তবে ভাল অনুশীলনে রিফ্যাক্টরটির জন্য সামান্য পদক্ষেপ গ্রহণ করুন (উদাহরণস্বরূপ: এসকিউএলে যেটি ডোনোরোলাইজড টেবিলগুলিকে সাধারণীকরণে ভেঙে পুরানো টেবিলের নামগুলি দিয়ে ভিউ ব্যবহার করবে)।

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

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


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

1
@ রাচেল - আপনি যদি নতুন টেবিলগুলির নিয়ন্ত্রণে থাকেন তবে তাদের জন্য ভাল ডিজাইন ব্যবহার করুন (আমি ধরে নিচ্ছি যে পুরানো ডিজাইনের আপডেটগুলি নতুন টেবিলগুলিতে প্রভাব ফেলবে না)। আপনার কোড পরিবর্তন করার দরকার হলে আপনার রক্ষণাবেক্ষণের ব্যয় কম হবে।
ওবেদের

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

1

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

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

আমি মনে করি আপনি সম্ভবত সঠিক পছন্দ করেছেন।


1

যতটা সম্ভব, আপনার অ্যাপ্লিকেশন কোডটি দুর্বল ডেটা নকশা থেকে আলাদা করা উচিত।

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

লিগ্যাসি টেবিলগুলি আপডেট করতে হলে, আপডেটগুলি পরিচালনা করতে সঞ্চিত পদ্ধতিগুলি লেখার বিষয়টি বিবেচনা করুন। এগুলি লেখার ক্ষেত্রে আরও জটিল, তবে তাত্ক্ষণিকভাবে তাদের পরীক্ষা করা যেতে পারে।


1

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

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

কিছু কোড একা ছেড়ে যেতে পারে; আমাদের সর্বদা সেই বিলাসিতা থাকে না।


-1

আপনি এখানে প্রযুক্তিগত debtণ নিয়ে কাজ করছেন। সংক্ষেপে, প্রযুক্তিগত debtণ সুদ বোঝায় যে আপনাকে সময়ের সাথে সাথে অর্থ প্রদান করতে হবে এবং কিছু সময় আপনাকে এটি ফেরত দিতে হবে।

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

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

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

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

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

সময়ের সাথে সাথে রিফ্যাক্টরিংয়ের ব্যয় বৃদ্ধি পাবে (এটি প্রযুক্তিগত debtণের স্বার্থ)। সুতরাং এটি শেষ পর্যন্ত ব্যয়বহুল পছন্দ হয়ে উঠবে।

আপনার বস প্রযুক্তিগত ofণের ধারণাটি বুঝতে পেরেছেন তা নিশ্চিত হন। এমনকি সতর্কতার সাথে আপনি প্রযুক্তিগত createণ তৈরি করবেন debt এক পর্যায়ে, অর্থ ফেরত দেওয়ার জন্য ব্যবহৃত হবে। আপনি যখন উদ্দেশ্যগতভাবে প্রযুক্তিগত purposeণ তৈরি করেন, আপনার কাছে এর একটি বৈধ কারণ থাকতে হবে এবং debtণটিকে বিনিয়োগ হিসাবে দেখবেন (ঠিক আসল debtণের মতো)। অন্য যে কোনও ক্ষেত্রে, উদ্দেশ্য অনুযায়ী প্রযুক্তিগত debtণ করবেন না।

আপনি ডিবি বিকশিত করার পদ্ধতিগুলিতে আগ্রহী এবং এই বিবর্তনগুলি মোতায়েন করতে পারেন: http://richarddingwall.name/2011/02/09/the-road-to-automated-database-dep रोजगार

যাইহোক, এটি একটি কঠিন কাজ, তাই সৌভাগ্য। এটা মূল্য !


-1

এটি এর একটি সাধারণ সমস্যা: "আমার এখনকার বা পরে আমার কাজের সুবিধাগুলি কাটাতে হবে?" এবং আমি মনে করি না যে উত্তরটির কোনও জেনেরিক সমাধান হতে পারে। এই জাতীয় সিদ্ধান্তের সাথে জড়িত সমস্ত কারণ (প্রযুক্তিগত এবং মানব) কেবলমাত্র আপনি জানেন।

তবে আপনার সমস্যাটি একটি আকর্ষণীয় প্রশ্ন উত্থাপন করে:

স্বয়ংক্রিয় কোড রিফ্যাক্টরিং কি যথেষ্ট অগ্রগতি অর্জন করে যাতে কোড অভিন্নতার আরও মূল্যবান হওয়া উচিত?

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

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

যদি এই জাতীয় কোনও সরঞ্জাম উপস্থিত থাকে (আমি অবাক হব না যে এটি ইতিমধ্যে রয়েছে) তবে এই জাতীয় সিদ্ধান্ত নেওয়ার সময় এটি বিবেচনায় নেওয়া ভাল।


-2

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


বিকাশকারী হিসাবে আপনার নিখুঁত বিবৃতিগুলির বিপদ সম্পর্কে জানা উচিত।
whatsisname

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