Какова наилучшая практика для обработки конфигурации приложения? - PullRequest
3 голосов
/ 05 марта 2012

Я сформулирую вопрос в контексте моего приложения, но я думаю, что оно обычно имеет более широкую область применения для конфигурации.Мое приложение позволяет компаниям отслеживать пропуски и праздники для своих сотрудников.Одним из преимуществ является то, что оно автоматически увеличивает право человека на отпуск в соответствии с правилами, установленными работодателем.Предполагается, что компания выберет:

A) автоматически увеличивать право работника на определенное количество дней в году, например, 1 января каждого года, право на отпуск увеличивается на 1 день;или

B) право работника увеличивается в зависимости от стажа работы, например, после 2 лет работы, право увеличивается на 2 дня

Каков наилучший способ реализации этой функции?Первый вариант довольно прост в реализации, так как я отслеживаю даты начала / окончания каждого года отпуска, и прирост для каждого сотрудника может быть сохранен как целое число.

Я думаю, я ищу решения для наилучшей практикисохранить выбранный метод;как хранить соответствующие опции и все в расширяемом формате, что позволяет мне добавить дополнительные методы позже.

Я работаю с Ruby on Rails, но вопрос, вероятно, относится к другим языкам.

Спасибо

Робин

1 Ответ

0 голосов
/ 08 марта 2012

Как насчет: сохранить баланс в Сотрудник. Сотрудник принадлежит Компании. Когда придет время, установите баланс, используя что-то вроде

self.company.set_balance(self.balance)

Таким образом, ваш оценщик сотрудников обходит всех сотрудников и просит компанию пересчитать свой баланс.

Если это глобальная политика, вам не нужно сообщать Компании, кто такой сотрудник, но если вам нужны особые случаи, вы можете передать Employee методу set_balance, чтобы он имел больше информации о работник пересчитывается.

Что касается стратегии Compay по увеличению числа дней, я бы включил ее в модель для ограничения необходимых изменений кода при изменении стратегии.

Если это простое правило, возможно, просто держите его в паре ключ / значение:

"holiday_entitlement" / "плоский" или же "holiday_entitlement" / "стаж"

Я бы не стал хранить значения (1 или 2) в БД, чтобы умные сотрудники не взламывали БД и не помещали туда «благоприятные» значения:)

...