julia_v_iluhina

Untitled

Oct 6th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.81 KB | None | 0 0
  1.         ArrayList<String> tasks = new ArrayList<String>();
  2.         Collections.addAll(tasks, "task1", "task2", "task3", "task4");
  3.  
  4.         create(tasks); //експеримент :)
  5.         /*
  6.             экспериментатор))
  7.             в следующем видео - будет про это - как такое грамотнее реализовать
  8.  
  9.             сразу кусок теории - уже ко второму видео)
  10.             как посмотришь и в целом поймешь - можешь углубить понимание
  11.             http://www.linkex.ru/java/varargs.php
  12.         */
  13. **************************
  14.     private void create(ArrayList<String> tasks){
  15.     /*
  16.         тебе не таски передают, а их тексты
  17.         я бы советовала переименовать параметр в taskTexts
  18.  
  19.         из следующего видео - станет ясно - почему
  20.     */
  21. *******************************
  22.     private void complete(int index){
  23.  
  24.         if ($("#todo-list li:nth-of-type(" + index + ").completed").exists()){
  25.             $("#todo-list li:nth-of-type(" + index + ") .toggle").click();
  26.         }
  27.         $("#todo-list li:nth-of-type(" + index + ") .toggle").click();
  28.  
  29.     }
  30. /*
  31.     ну, я клонила к другому)
  32.  
  33.     да, теперь твой метод гарантированно закомплитит)
  34.     а может еще для начала и переоткроет)
  35.  
  36.     да, метод универсальный)
  37.  
  38.     только вот давай подумаем - как решить - что в тесте мы покрыли
  39.  
  40.     вызывая такой метод - мы можем покрыть лишь complete
  41.     а можем еще и activate )
  42.  
  43.     т е - есть проблемы с подсчетом покрытия
  44.  
  45.     еще момент
  46.     мы  - когда пишем тест - мы же знаем - какой результат ожидаем
  47.     мы знаем - что правильная ситуация - когда такая-то таска  - активная
  48.     и мы для нее вызываем complete
  49.     и по хорошему - если эта таска не активная - то тест должен упасть -
  50.     раз мы пытаемся сделать то, что сделать не возможно
  51.     а вот такое слишком умное и гибкое поведение скроет от нас - что у нас были проблемы
  52.     состояние таски не соответствовало ожидаемому
  53.  
  54.     т е - эта умная гибкость мешает понять - правильно ли работает тест
  55.  
  56.     еще момент
  57.         если неверно отрботает проверка
  58.         или если неверно работает переоткрытие таски
  59.         то мы может так и не увидеть - как работает complete - даже если он работает)
  60.  
  61.         проверка может сработать неверно - запросто
  62.         exists() - не ждет
  63.         и если что-то на єтот момент не догрузилось - то получим ... ерунду))
  64.  
  65.     т е - сложная логика может нам навредить - возможны проблемы с выполнением действия complete
  66.     не потому, что оно не работает, а потому, что перед ним мі много сложного наделали
  67.  
  68.  
  69.     к чему я клонила)
  70.     в общем случае - нам надо было сделать вот это -
  71.     $("#todo-list li:nth-of-type(" + index + ") .toggle").click();
  72.  
  73.     но - назвать это complete - некорректно
  74.     т к в одном случае - это complete
  75.     а в другом - вовсе даже reopen
  76.     в зависимости от контекста вызова - в каком статусе таска - к которой это применили
  77.     зато - такое действие - можно назвать - переключить = toggle
  78.     это будет соответствовать действию - в любом из случаев
  79.  
  80.     в результате - получили максимально простой метод
  81.     с именем - которое отражает в точности - что метод делает
  82.     независимо от контекста вызова
  83.  
  84.     есть способ написать именно complete )
  85.     вопрос - стоит ли
  86.     но - это реально
  87.     ниже приведу описание этого
  88.     это больше из-за того, что ты товарищ любопытный) и уже докопала до мысли - что можно
  89.     уточниться до complete )
  90.  
  91.     можно запросто останавливаться на варианте toggle - он прост и для реализации, и для понимания
  92.     это важные его достоинства)
  93. */
  94. **************************************
  95.     private void completeAll(){
  96.  
  97.         $("#toggle-all").click();
  98.  
  99.     }
  100. /*
  101.     именно из тех же соображений - и это действие нельзя назвать completeAll
  102.     потому что - если это применить к запомпличеным таскам - они переоткроются
  103.  
  104.     так что - тут тоже toggleAll - будет лучшим и точным именем
  105. */
  106.  
  107. *********************************************************
  108. /*
  109.     как реализовать отдельно complete и reopen
  110.  
  111.     повторюсь - делать это не обязательно
  112.  
  113.     больше для общего развития
  114. */
  115.   public void complete(int index) {
  116.        $("#todo-list li:nth-of-type(" + index + ").active .toggle").click();
  117.    }
  118.  
  119.     public void reopen(int index) {
  120.        $("#todo-list li:nth-of-type(" + index + ").completed .toggle").click();
  121.     }
  122. /*
  123.     логика проста
  124.     что есть css selector - это фактически маска, по которой мы ижем элементы
  125.  
  126.     если мы будем искать
  127.         в списке тасок #todo-list li
  128.         такой-то элемент
  129.         у которого есть класс active или completed
  130.         и уже внутри этого элемента - элемент с классом toggle
  131.  
  132.     то - мы просто не найдем таску - если она будет в не верном состоянии
  133.     и соответственно - на вызове метода complete для уже закомпличеной таски
  134.     тест упадет - т к просто не на чем будет кликать -
  135.     мы по селектору не найдем нужного элемента
  136.     что и требовалось
  137.  
  138.     методы работают только тогда - когда применяются в правильном контексте
  139.  
  140.     да, их еще дорабатывать придется)
  141.     и они будут сложнее - чем метод toggle
  142.     это минусы такого решения
  143.  
  144.     но - такой подход имеет право на жизнь тоже
  145.     т к вызывая complete или reopen - мы еще и косвенно проверим состояние таски
  146.     что тоже неплохо) - это плюсы решения
  147. */
Advertisement
Add Comment
Please, Sign In to add comment