বিপণন এবং ইউআই নামকরণের পরিবর্তন হলে সত্তাগুলির অভ্যন্তরীণ নামকরণ (শ্রেণি, পদ্ধতি, ডাটাবেস টেবিল ইত্যাদি) পরিবর্তন করা উচিত?


20

আমাদের প্রায় 8 বছর ধরে দীর্ঘ জীবনকালীন পণ্য রয়েছে। সময়ের সাথে সাথে ধারণাগুলি এবং সত্তার নাম পরিবর্তন হয়। এই নতুন নামের সাথে মেলে সমস্ত কোড বেস এবং ডাটাবেস টেবিল এবং কলামগুলির নতুন নামকরণের জন্য আমাদের কাজটি করা উচিত?

এই বা কিছু সেরা অনুশীলন প্রকাশিত আছে?

ধন্যবাদ

উত্তর:


6

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

আপনার আসল প্রশ্নের উত্তর দেওয়া দরকার: পরিবর্তনটি করার ক্ষেত্রে ব্যয় / উপকারের ট্রেড অফ কী?

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

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


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

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

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

2

কোডটি দীর্ঘ সময়ের জন্য বেঁচে থাকার প্রত্যাশা করা হয় এবং এতে নতুন বিকাশকারীরা কাজ করবে, আমি এই পরিবর্তনগুলি করব।

কোনও নতুন বিকাশকারীকে কোনও প্রকল্পে প্রবেশ করতে এবং সত্তার নামগুলি বিভ্রান্তিমূলক খুঁজে পেতে এটি খুব বিভ্রান্তিকর এবং সময় সাপেক্ষ হতে পারে।

এর বৈধ যুক্তিও রয়েছে ... এটি যদি না ভাঙে তবে এটি ঠিক করবেন না।


2

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

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

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

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


2

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


অভ্যন্তরীণ কোডের নাম ব্যবহারের জন্য +1 - এছাড়াও এক ধরণের ডিকোপলিং। আরে, এটি মজিলা :-) এর জন্য কাজ করেছে।
sleske

0

আমি বলছি যে কোনও ক্ষেত্রে কোডটি যে কোনও সময়ের জন্য বজায় রাখতে বোঝানো হয়েছে এটি ঠিক করুন। আপনি সম্ভবত ভবিষ্যতে বিভ্রান্তি এবং সময় সাশ্রয় করবেন।


0

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

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

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

অবশ্যই, আমাদের সিস্টেমের বিভিন্ন উপাদান বিভিন্ন পরিভাষা ব্যবহার করে। এগুলি বিভিন্ন সময়ে বিভিন্ন টিম দ্বারা বিকাশ করা হয়েছিল এবং তাদের সবার উপরে আমাদের নিয়ন্ত্রণ নেই। প্রকৃতপক্ষে, এক পর্যায়ে, কেউ একটি উপাদানগুলির একটি স্তর যুক্ত বা সরিয়ে নিয়েছে এবং তাই অন্যান্য স্তরগুলি একে অপরের সাথে তুলনামূলকভাবে স্থানান্তরিত হয়। একই তিনটি স্তরটি একটি উপাদানগুলিতে A, B, এবং C দ্বারা প্রতিনিধিত্ব করা হয়, তবে B, C, এবং D হিসাবে অন্যটিতে রয়েছে।

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

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