বিশ্রামে ট্রাম্প DRY কে ডিকপলিং করে?


19

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

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

  1. মূল জাভা ক্লাসটি (বা একটি সাবক্লাস) সরাসরি REST এপিআইতে প্রকাশ করুন বা or
  2. REST এপিআই এর জন্য একটি নতুন ডেটা ট্রান্সফার ক্লাস (ডিটিও প্যাটার্ন) তৈরি করবেন?

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

# 1 এর জন্য যুক্তি:

  • DRY (নিজেকে পুনরাবৃত্তি করবেন না)
  • দ্রুত প্রয়োগ করা
  • REST এপিআই আপগ্রেড করা সহজ

# 2 এর জন্য যুক্তি:

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

নীচের লাইনটি এটি ডিআরওয়াই (# 1) এবং ডিকোপলিং (# 2) এর মধ্যে কোনও ট্রেড অফের মতো বলে মনে হচ্ছে।

আমি # 1 দিয়ে শুরু করার দিকে ঝুঁকছি এবং তারপরে যদি সমস্যা দেখা দেয় তবে পরে # 2 এ চলে যাচ্ছেন, যা আপনার প্রয়োজনীয়তা প্রমাণ করতে পারবেন না তা তৈরি না করার চতুর গাইডলাইন অনুসরণ করে following এটা কি একটি খারাপ ধারণা; আমি যদি মনে করি যে আমি যেভাবেই সেখানে শেষ করতে পারি তবে কি # 2 দিয়ে শুরু করা উচিত?

আমার তালিকাগুলি থেকে কি বড় যুক্তি / পরিণতি অনুপস্থিত রয়েছে?


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

"যদি হয়" = YAGNI IMO
জোনাথন

উত্তর:


10

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

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

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

তবে, যদি প্রোটোকলটিতে টাইপের তথ্য তারের ওপারে যায় তবে অন্তর্নিহিত জাভা ধরণের পরিবর্তনগুলি যখন নতুন ধরণের একটি ফ্ল্যাট ড্রপ-ইন সম্ভব নাও হতে পারে বরং এটি আরও বৃহত্তর প্রচেষ্টা হতে পারে। যদি এটি হয় তবে YAGNI যাওয়ার অর্থ এখন প্রযুক্তিগত debtণ আদায় করা এবং আপনার অন্তর্নিহিত প্রযুক্তির সাথে সম্পর্কিত ঝুঁকি।

ব্যক্তিগতভাবে আমি এখনই ডিকুয়াল করব।

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


7

# 1 এর মূল তর্কগুলি বাস্তবায়ন এবং আপগ্রেড করা সহজ, কিন্তু এটি কি আপনার প্রয়োজনীয়তা পূরণ করে?

# 2 এর জন্য আপনার যুক্তিতে আপনি ইঙ্গিত করেছেন যে জাভা API এবং REST এপিআই সম্ভবত স্বাধীনভাবে পরিবর্তিত হতে পারে। এর অর্থ তারা পৃথক উদ্বেগ এবং আপনি পৃথক ক্লাস ব্যবহার করে নিজেকে পুনরাবৃত্তি করছেন না। শুধু কারণ দুটি জিনিস একই চেহারা, না মানে তারা হয় একই।


6

আপনার আরএসটি এপিআইতে আপনার ডেটা মডেলের মতো কাঠামো অনুসরণ করতে হবে না

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

সুতরাং, ডিকোপলিং এখানে যাওয়ার উপায়।

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