এটি সত্যই দুর্গন্ধযুক্ত বলে মনে হচ্ছে এবং আরও প্রসঙ্গ না দেখে নিশ্চিত করে বলা অসম্ভব। এটি করার জন্য দুটি কারণ থাকতে পারে, যদিও উভয়ের জন্য বিকল্প রয়েছে।
প্রথমত, এটি আংশিক রূপান্তর বাস্তবায়নের একটি সংক্ষিপ্ত উপায় বা রূপান্তর ব্যর্থ হলে ফলাফলকে ডিফল্ট মান সহ রেখে যায়। এটি আপনার কাছে থাকতে পারে:
public void ConvertFoo(Foo from, Foo to) {
if (can't convert) {
return;
}
...
}
Foo a;
Foo b = DefaultFoo();
ConvertFoo(a, b);
// If conversion fails, b is unchanged
অবশ্যই, সাধারণত এটি ব্যতিক্রম ব্যবহার করে পরিচালনা করা হয়। যাইহোক, আপত্তিগুলি যে কোনও কারণেই এড়ানো দরকার হলেও, এটি করার আরও ভাল উপায় আছে - ট্রাইপার্স প্যাটার্নটি এক বিকল্প।
অন্য কারণটি হ'ল এটি নিখুঁত ধারাবাহিকতার কারণে হতে পারে, উদাহরণস্বরূপ এটি একটি পাবলিক এপিআইয়ের অংশ যেখানে এই পদ্ধতিটি যে কোনও কারণে সমস্ত রূপান্তর ফাংশনের জন্য ব্যবহৃত হয় (যেমন অন্যান্য রূপান্তর ফাংশনগুলির একাধিক আউটপুট রয়েছে)।
জাভা একাধিক আউটপুট মোকাবেলায় দুর্দান্ত নয় - এতে কিছু ভাষার মতো আউটপুট-প্যারামিটার থাকতে পারে না বা অন্যের মতো একাধিক রিটার্ন মান থাকতে পারে - তবুও আপনি রিটার্ন অবজেক্ট ব্যবহার করতে পারেন।
ধারাবাহিকতার কারণটি বরং খোঁড়া তবে দুঃখজনকভাবে এটি সবচেয়ে সাধারণ হতে পারে।
- সম্ভবত আপনার কর্মক্ষেত্রের স্টাইল পুলিশ (বা আপনার কোডবেস) জাভা-ব্যাকগ্রাউন্ড থেকে এসেছে এবং পরিবর্তনে অনীহা প্রকাশ করেছে।
- আপনার কোডটি কোনও ভাষা থেকে একটি বন্দর হতে পারে যেখানে এই শৈলীটি আরও মূর্তিমান।
- আপনার সংস্থাকে বিভিন্ন ভাষায় এপিআই ধারাবাহিকতা বজায় রাখতে হবে এবং এটি সর্বনিম্ন-সাধারণ-ডিনোমিনেটর শৈলী ছিল (এটি খাঁটি তবে এটি গুগলের ক্ষেত্রেও ঘটে )।
- অথবা সম্ভবত স্টাইলটি সুদূর অতীতকে আরও অনুধাবন করেছে এবং এটি তার বর্তমান রূপে রূপ নিয়েছে (উদাহরণস্বরূপ, এটি ট্রাইপার্স প্যাটার্ন হতে পারে তবে কিছু ভাল উদ্দেশ্যপ্রাপ্ত পূর্বসূরীর আবিষ্কারের পরে ফেরতের মানটি সরিয়ে ফেলল যে কেউ এটিকে একেবারেই পরীক্ষা করে নি)।