Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public enum TaskStatus{
- /*
- пойдем от простого к сложному)
- для чего нам нужен такой enum
- верно - судя по названию TaskStatus -
- лишь для обозначения статуса таски
- */
- TOGGLE("true"),
- /*
- советую посмотреть перевод слова TOGGLE
- это глагол )
- и означает он - переключить
- а мы обозначаем - статусы
- один статус - активный
- второй - переключить
- правда, странно?
- исходя из уже исполозованных на UI терминов
- Completed (filter)
- Clear completed (button)
- логичнее всего назвать соответствующий статус - COMPLETED
- и будет у тебя - 2 варианта статусов
- активный
- закомпличеный
- все стройно и логично)
- не точные имена - и тебя будут вводить в заблуждение
- пока будешь писать код
- что уж говорить о других людях - которые будут с кодом работать)
- нейминг - это важно
- */
- ACTIVE("false");
- private final String description;
- TaskStatus(String description) {
- this.description = description;
- }
- /*
- вариант сохранять описание для статуса - это ок идея
- */
- public String isTrue() {
- return description;
- }
- /*
- еще одна важная мелочь - форматирование кода
- есть общепринятые стандарты форматирования коа это отступы,
- выравнивание
- поработав с кодом
- всегда его реформатируй
- выдели код
- и в меню Code->reformat code
- запомни горячие клавиши
- и пользуйся ими регулярно
- так и ты заведень привычку работать с хорошо отформатированным кодом
- и будешь другим членам команды отдавать код в максимально понятном варианте
- это тоже способ - как и нейминг - луше и быстрее понимать код
- только теперь речь не столько о смыслах, сколько о структуре
- ну и про нейминг
- возвращаем мы - description = описание статуса=строковое значение
- но это делает метод с именем isTrue()
- видишь нелогичность?
- давай задумаемся - что мы хотим получить
- от того, что у каждого статуса - есть описание
- я так предполагаю - что описание и хотим получить)
- и логичнее было бы реализовать метод String getDescription()
- который бы это и показывал
- можно сделать так
- а можно еще немного подумать
- все классы - в том числе и enum - это потомки класса Object
- у которого есть метод String toString()
- а метод в свою очередь - отвечает за преобразование объекта к строке
- т е - когда мы для некого TaskStatus taskStatus
- выполним "status is " + taskStatus
- то будет как раз использован taskStatus.toString()
- соответственно - нам удобнее реализовать не метод getDescription()
- а именно toString()
- что тоже будет достаточно точно
- toString() - это строковое описание объекта
- ну и бонусы при написании кода (преобразование объекта к строке)
- */
- }
- *****************************************************
- public String getStringForScript(TaskStatus... elements) {
- /*
- смотрим на тип параметра
- тип параметра - TaskStatus...
- т е мы на вход ждем несколько статусов тасок
- (не тасок - у каждой из которых есть как текст, так и статус,
- а именно статусов, только статусов)
- и при этом - мы этот параметр называем elements
- непонятно)
- точнее было бы - taskStatuses
- */
- String result = "elements = {";
- /*
- я так понимаю - тут ты собирал некую строку
- которая мало применима в данном задании
- будем считать - что просто разбирался с использованием enum
- и неким способом собирать одну строку по переданным данным
- */
- for (TaskStatus element:elements) {
- /*
- for (TaskStatus taskStatus:taskStatuses)
- вот такой код и здесь
- и ниже - когда ты оперируешь данными одного из переданных статусов
- будет точнее
- из кода будет понятнее - с чем ты работаешь
- */
- result += "element:" + element.isTrue() ? "true" : "false" + ","; //вот здесь ошибка Incompatible types, required booleand
- /*
- про ошибку
- почитай про ternary operator java
- его схема
- <если ...> ? <то ...> : <иначе ...>
- вот в <если ...>
- требуется значение типа boolean
- что тебе в ошибке и писалось
- а метод isTrue() - возвращал строку (это уже "true" или "false" - посмотри на его реализацию)
- мы уже выше решили - что нам нужен toString()
- и тут мы сможем писать
- result += "element:" + taskStatus + ",";
- правда, код стал попроще?
- я пока по-прежнему не понимаю - что мы за строку собираем и для чего)
- ну то пока не страшно)
- */
- }
- if (elements.length>0) {
- result = result.substring(0, result.length() - 1);
- }
- result += "}";
- return result;
- /*
- к этому коду - особых вопросов нету)
- */
- }
Advertisement
Add Comment
Please, Sign In to add comment