Ваша BillBundle
идея выглядит хорошо для меня. Вы говорите, что вам приходилось многократно писать код:
Billbundle billBundle = new BillBundle();
billBundle.setFives(fives);
billBundle.setTens(tens);
billBundle.setTwenties(twenties);
billBundle.setFifties(fifties);
depositCash(billBundle);
Но действительно ли вы действительно или просто думаете, что можете?
Подобное BillBundle
должно действительно быть сделано только тогда, когда счета подсчитаны , и я был бы удивлен, если бы это произошло более чем в нескольких местах.
Код, который на самом деле не изменяется и не определяет номер каждого счета, должен просто распространяться по пакету счетов. Метод, который регистрирует, сколько счетов каждого вида было внесено? Передайте BillBundle
, что вы получили от подсчета. Метод, который складывает общую сумму денег? Передайте BillBundle
, что вы получили от подсчета. и т. д. и т. д.
Это гораздо лучше, чем обойти 4 параметра повсеместно по двум причинам:
Гораздо меньше возможностей все испортить - каждая функция, которая принимает 4 параметра счета и передает у них в другом месте есть шанс передать их в неправильном порядке или в неправильных положениях параметров. Это особенно проблематично, поскольку фактические значения имеют один и тот же тип (т.е. int
), и многие аргументы используют этот тип для совершенно разных вещей.
Гораздо меньше кода на самом деле зависит от типов счетов, которые вы поддерживаете. Допустим, ваша страна переключается на монету в 5 долларов, или вы просто не хотите, чтобы они были в машинах больше ... сколько кода нужно изменить, чтобы избавиться от пятерок? Вам нужно будет изменить код, который подсчитывает счета, и все остальные вещи, которые на самом деле заботятся о суммах каждого счета, но вам не нужно менять код, который просто пропускает эти счета. Они могут просто обойти оригинал BillBundle
и не беспокоиться об этом.
Одно изменение, которое я бы предложил, - сделать ваш BillBundle неизменным. Тогда вам не нужно беспокоиться о том, чтобы кто-нибудь изменил его, когда вы передаете его.
Что-то вроде:
class BillBundle
{
public final int fives;
public final int tens;
public final int twenties;
public final int fifties;
public BillBundle(int fives, int tens, int twenties, int fifties)
{
this.fives = fives;
this.tens = tens;
this.twenties = twenties;
this.fifties = fifties;
}
}
Я предупрежу вас, что большинство Java-программистов предпочитают методы getter вместо открытых полей final, но для этого нет веских причин.
Шпаклевка использует свой собственный .ppk формат для файлов ключей, и ssh Cygwin, вероятно, не может считать их правильно.
Решение: преобразуйте .ppk файл в формат ключа OpenSSH с puttygen.exe.
Если можно войти в систему со шпаклевкой, нет никакой потребности "раздражать сетевых администраторов". Просто генерируйте новый ключ с cygwin, затем войдите в систему со шпаклевкой и поместите Ваш новый открытый ключ в Ваш .ssh/authorized_keys файл. Необходимо теперь смочь войти в систему с ssh cygwin.
Править:
Между прочим, верный способ "взбесить" любого администратора состоит в том, чтобы использовать незашифрованные ключи.
Необходимо заставить "puttygen.exe" от веб-страницы шпаклевки http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html преобразовывать ключ к формату OpenSSH. Затем это должно просто работать.