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

এছাড়াও, chargeপদ্ধতির স্বাক্ষরটি একটি এবং কেবল একটি কাজ করার নির্দেশিকা এবং কমান্ড-কোয়েরি পৃথকীকরণের বিপরীতে যায় কারণ এটি কোনও নতুন মান ফেরত দেওয়ার সাথে সাথে বস্তুকে তার অবস্থার পরিবর্তন করতে বাধ্য করে।
সর্বোপরি, আমি বিশ্বাস করি যে এই ক্ষেত্রে সবচেয়ে সহজ ইন্টারফেস হবে:
public class Client {
private float bal;
float getBalance() { return bal; }
void charge(float c) { bal -= c; }
}