একই নামযুক্ত ক্লাসগুলির সাথে কীভাবে व्यवहार করবেন (বিভিন্ন প্যাকেজ)


9

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

আপনি অনুমান করতে পারেন, উভয় শ্রেণি একই জাভা ফাইলে রেফারেন্স করা হলে নামগুলি দ্বন্দ্ব করে।


উদাহরণ স্বরূপ:

com.myapp.model (package)
 - Device (class)
 - ...

com.myapp.data (package)
 - Device (class)
 - ...

এই কেসগুলি চিকিত্সা করার সর্বোত্তম অনুশীলনটি সম্পর্কে আমাদের বিতর্ক হয়েছিল এবং নিম্নলিখিত বিকল্পগুলি উপস্থিত হয়েছিল:

1 ম বিকল্প

  • ক্লাসটির নাম পরিবর্তন করে একটি উপসর্গ যুক্ত করা হচ্ছে

    ModelDevice
    DataDevice

2 য় বিকল্প

  • যখন উভয় রেফারেন্স হয় তখন পুরো প্যাকেজ + ক্লাসের নাম ব্যবহার করে

    com.myapp.model.Device
    com.myapp.data.Device

কোড পরিচালনা এবং স্কেলিবিলিটির ক্ষেত্রে আরও সঠিক কী?

আমরা বর্তমানে উভয় পদ্ধতির মিশ্রণ করছি এবং অসামঞ্জস্যতা শুরু করছি


এটি যদি মাঝে মধ্যেই ঘটে তবে সম্ভবত এটি কোনও ব্যাপার নয় - এটি যদি পুনরাবৃত্তি হওয়া প্যাটার্ন হয় তবে আমি সম্ভবত ক্লাসগুলির নামটি আরও বিশৃঙ্খলা করে নামিয়ে দেব যাতে এটি গোলমাল হতে না পারে।
Assylias

আমি কতটা ঘৃণা করি তা আপনার কোনও ধারণা নেই java.util.Dateএবং java.sql.Date- বিশেষত যেহেতু java.sql.Dateউপ- java.util.Dateশ্রেণীর ডেটা স্তর থেকে এত সুন্দরভাবে পিছলে যায় (এবং জেএসএন-তে সুন্দরভাবে সিরিয়ালায়িত হয় না)।

অপশন ২.১
অপরটি

উত্তর:


18

প্যাকেজের নাম ব্যবহার করুন। এই ধরণের সমস্যা হ'ল জাভা কেন প্যাকেজ নামকরণের কনভেনশন ব্যবহার করে। এটি একই সংস্থার দুটি দল বা পৃথিবীর বিপরীতে দুটি দলই হোক না কেন, এই ধরণের সমস্যাগুলি প্রতিরোধ করে।


1

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

যদিও আপাতত আপনি দেখতে পাবেন যে নামকরণের ক্লাসগুলি কিছুটা ভাল কাজে আসবে, তবে দীর্ঘ সময়ের জন্য প্রস্তাবিত বিকল্পটি প্যাকেজের নামগুলির উপসর্গ রেখে যাওয়া উচিত যা ইন্ডাস্ট্রির স্ট্যান্ডার্ড।


0

কেবল এমন একটি দিক যুক্ত করতে যা এখনও উল্লেখ করা হয়নি:

ব্যবহারের ধরণগুলি দেখুন, যেমন জাভা উত্স যা এক বা উভয় শ্রেণির রেফারেন্স দেয়।

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

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

তবে উভয় ডিভাইস ক্লাসকে একটি উত্সে দেখতে পারা যায় এমন একটি ইঙ্গিতও হতে পারে যে উত্সটি মডেল এবং ডেটা ওয়ার্ল্ড থেকে কার্যগুলি মিশ্রিত করে একক-দায়িত্ব নীতি লঙ্ঘন করে।

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