julia_v_iluhina

Untitled

Oct 23rd, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.55 KB | None | 0 0
  1.     public enum TaskStatus{
  2.     /*
  3.         пойдем от простого к сложному)
  4.  
  5.         для чего нам нужен такой enum
  6.         верно - судя по названию TaskStatus -
  7.         лишь для обозначения статуса таски
  8.     */
  9.                 TOGGLE("true"),
  10.                 /*
  11.                     советую посмотреть перевод слова TOGGLE
  12.                     это глагол )
  13.                     и означает он - переключить
  14.  
  15.                     а мы  обозначаем - статусы
  16.                     один статус - активный
  17.                     второй - переключить
  18.  
  19.                     правда, странно?
  20.  
  21.                     исходя из уже исполозованных на UI терминов
  22.                         Completed (filter)
  23.                         Clear completed (button)
  24.                     логичнее всего назвать соответствующий статус - COMPLETED
  25.  
  26.                     и будет у тебя - 2 варианта статусов
  27.                         активный
  28.                         закомпличеный
  29.                     все стройно и логично)
  30.  
  31.                     не точные имена - и тебя будут вводить в заблуждение
  32.                     пока будешь писать код
  33.                     что уж говорить о других людях - которые будут с кодом работать)
  34.  
  35.                     нейминг - это важно
  36.                 */
  37.                 ACTIVE("false");
  38.  
  39.             private final String description;
  40.  
  41.             TaskStatus(String description) {
  42.                 this.description = description;
  43.  
  44.             }
  45.             /*
  46.                 вариант сохранять описание для статуса - это ок идея
  47.             */
  48.                 public String isTrue() {
  49.                 return description;
  50.             }
  51.             /*
  52.                 еще одна важная мелочь - форматирование кода
  53.                 есть общепринятые стандарты форматирования коа  это отступы,
  54.                 выравнивание
  55.                
  56.                 поработав с кодом
  57.                 всегда его реформатируй
  58.                 выдели код
  59.                 и в меню Code->reformat code
  60.                
  61.                 запомни горячие клавиши
  62.                 и пользуйся ими регулярно
  63.                
  64.                 так и ты заведень привычку работать с хорошо отформатированным кодом
  65.                 и будешь другим членам команды отдавать код в максимально понятном варианте
  66.                
  67.                 это тоже способ - как и нейминг - луше и быстрее понимать код
  68.                 только теперь речь не столько о смыслах, сколько о структуре
  69.                
  70.                 ну и про нейминг
  71.                 возвращаем мы - description = описание статуса=строковое значение
  72.                 но это делает метод с именем isTrue()
  73.                 видишь нелогичность?
  74.                
  75.                 давай задумаемся - что мы хотим получить
  76.                 от того, что у каждого статуса - есть описание
  77.                
  78.                 я так предполагаю - что описание и хотим получить)
  79.                 и логичнее было бы реализовать метод String getDescription()
  80.                 который бы это и показывал
  81.                
  82.                 можно сделать так
  83.                
  84.                 а можно еще немного подумать
  85.                 все классы - в том числе и enum - это потомки класса Object
  86.                 у которого есть метод String toString()
  87.                 а метод в свою очередь - отвечает за преобразование объекта к строке
  88.                 т е - когда мы для некого TaskStatus taskStatus
  89.                 выполним "status is " + taskStatus
  90.                 то будет как раз использован taskStatus.toString()
  91.                
  92.                 соответственно - нам удобнее реализовать не метод getDescription()
  93.                 а именно toString()
  94.                 что тоже будет достаточно точно
  95.                 toString() - это строковое описание объекта
  96.                 ну и бонусы при написании кода (преобразование объекта к строке)
  97.                
  98.                
  99.             */
  100.     }
  101.  
  102. *****************************************************
  103.  
  104.     public String getStringForScript(TaskStatus... elements) {
  105.     /*
  106.         смотрим на тип параметра
  107.         тип параметра - TaskStatus...
  108.         т е мы на вход ждем несколько статусов тасок
  109.         (не тасок - у каждой из которых есть как текст, так и статус,
  110.         а именно статусов, только статусов)
  111.        
  112.         и при этом - мы этот параметр называем elements
  113.         непонятно)
  114.        
  115.         точнее было бы - taskStatuses
  116.     */
  117.         String result = "elements = {";
  118.         /*
  119.             я так понимаю - тут ты собирал некую строку
  120.             которая мало применима в данном задании
  121.            
  122.             будем считать - что просто разбирался с использованием enum
  123.             и неким способом собирать одну строку по переданным данным
  124.         */
  125.         for (TaskStatus element:elements) {
  126.         /*
  127.             for (TaskStatus taskStatus:taskStatuses)
  128.             вот такой код и здесь
  129.             и ниже - когда ты оперируешь данными одного из переданных статусов
  130.             будет точнее
  131.             из кода будет понятнее - с чем ты работаешь
  132.         */
  133.             result += "element:" + element.isTrue() ? "true" : "false" + ","; //вот здесь ошибка Incompatible types, required booleand
  134.             /*
  135.                 про ошибку
  136.                 почитай про ternary operator java
  137.                
  138.                 его схема
  139.                 <если ...> ? <то ...> : <иначе ...>
  140.                
  141.                 вот в <если ...>
  142.                 требуется значение типа boolean
  143.                 что тебе в ошибке и писалось
  144.                 а метод isTrue() - возвращал строку (это уже "true" или "false" - посмотри на его реализацию)
  145.                
  146.                 мы уже выше решили - что нам нужен toString()
  147.                 и тут мы сможем писать
  148.                 result += "element:" + taskStatus + ",";
  149.                
  150.                 правда, код стал попроще?
  151.                
  152.                 я пока по-прежнему не понимаю - что мы за строку собираем и для чего)
  153.                 ну то пока не страшно)
  154.             */
  155.         }
  156.         if (elements.length>0) {
  157.             result = result.substring(0, result.length() - 1);
  158.         }
  159.         result += "}";
  160.         return result;
  161.         /*
  162.             к этому коду - особых вопросов нету)
  163.         */
  164.     }
Advertisement
Add Comment
Please, Sign In to add comment