В: Зачем использовать геттеры и сеттеры?
A: Использование их в сочетании с частными переменными экземпляра позволяет вам точно определить, как следует изменять значение поля.Это может стать утомительным, потому что большую часть времени получатели и установщики просто получат / установят значение без каких-либо проверок или побочных эффектов.Но даже здесь, в вашем коде, вы видите, как установщик faceValue проверяет, находится ли заданное значение между 0 и MAX.Это гарантирует, что когда кто-либо, включая вас, захочет изменить faceValue, входные данные будут проверены.
Это называется инкапсуляцией, где вы скрываете поля класса от всего, что находится за пределами этого класса, и определяете очень конкретные способы того, какизменить get и манипулировать этими полями.
Q: Почему для faceValue установлено значение 1?
A: Это просто инициализирует faceValue равным 1. Так что если вы вызываете getValue без предварительного броска кубика,всегда возвращайте 1. Это может быть что угодно.
Q: Зачем использовать MAX?
A: Это очень хорошая практика программирования - использовать константы для любой константы в вашем коде.
Прежде всего, это облегчает чтение кода.Если бы я читал твой код и увидел value <= 6
, я бы не понял, что такое 6 на самом деле.Если я видел что-то вроде DICE_MAX_VALUE, то я точно знаю, что вы проверяли.
Во-вторых, возможно, что еще важнее, использование констант позволяет вам определить его один раз, использовать его где угодно и гарантировать одинаковое значение.Если вы когда-нибудь хотели изменить это на кубик с 20-ю гранями, вам нужно было бы зайти в свой код и изменить все экземпляры с «6» на «20», что может быть раздражающим, трудоемким и подверженным ошибкам.