Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void givenAllActive(String a){
- /*
- Для добавления одой активной таски - ок )
- это работает
- передаем - мы текст таски
- разумнее такой параметр назвать taskText
- получим - givenAllActive(String taskText)
- имя метода - мы улучшим тоже)
- но - чуть позже
- следующий шаг - дореализовать этот метод
- чтобы он прининимал несколько текстов тасок
- и в результате - мы видели картину - в списке тасок -
- все эти таски в активном состоянии
- получим - givenAllActive(String... taskTexts)
- следующий шаг - еще дореализовать этот метод)
- и добавить первый параметр - в каком статусе добавить таски
- можно - для начала добавить boolean-параметр
- чтобы так задавать статус добавляемых тасок
- получим - given(boolean isCompleted, String... taskTexts)
- вот тут уже - не надо в имени метода уточнять AllActive
- т к набор параметров - вполне поясняет
- посмотрим на вызов такого метода
- given(true, "a", "b")
- не очень понятно - что за первый параметр)
- теоретически - можно добавить константы ACTIVE=false & COMPLETED=true
- тогда бы вызовы могли выглядеть так
- given(COMPLETED, "a", "b")
- уже лучше)
- но - все равно - можно вызвать и вот так
- given(true, "a", "b")
- т е - сделать некрасиво - все еще можно
- лучше - использовать для такого первого параметра enum
- пусть у нас будет enum TaskStatus
- со значениями ACTIVE & COMPLETED
- тогда - вариант given(TaskStatus taskStatus, String... taskTexts)
- и тогда - в качестве первого параметра - можно будет указать только значения из этого enum
- given(COMPLETED, "a", "b")
- или
- given(ACTIVE, "a", "b")
- третьего - не дано)
- т е - некрасиво - некак вызвать
- и это уже очень неплохо )
- ниже приведу текст про enum
- следующий этап развития - это получить такой метод
- который позволит добавить несколько тасок, причем - указывая статус для каждой таски
- поскольку у таски - 2 свойства - статус и ее текст - тут мы без класса дополнительного - не обойдемся )
- если у нас будет класс Task с 2-мя параметрами - статус и текст таски
- то - мы сможем реализовать given(Task... tasks)
- и вызывать его вот так, например
- given(new Task(ACTIVE, "a"), new Task(COMPLETED, "b"))
- про классы - ниже немного распишу
- если добрались до этого
- то разбираемся )
- вариант given(Task... tasks) - самый универсальный
- значит - в методе будет жить наш алгоритм
- а в методе given(TaskStatus taskStatus, String... taskTexts)
- который во многих случаях нам даст более лаконичный вызов -
- а значит, такой метод нам тоже нужен )
- вот в нем - уже не будем алгоритм реализовывать
- а лишь вызовем универсальный метод given(Task... tasks)
- тоже - ниже чуть больше подсказок будет
- в результате - получишь
- given(Task... tasks) - универсальный вариант,
- который будем переиспользовать во всех других дополнительных вариантах
- и первый дополнительный вариант - given(TaskStatus taskStatus, String... taskTexts)
- реализуй это, идя последовательно
- будут сложности - спрашивай)
- можно - пока это реализуется - тоже делать остановки с ревью
- дальше - подробности и подсказки
- */
- ******************************************************
- /*
- как реализовать varargs-параметр (String... taskTexts)
- http://www.linkex.ru/java/varargs.php
- */
- **********************************************************
- /*
- про enum попроще - объявили класс и его значения
- */
- public enum Day {
- MONDAY,
- TUESDAY,
- WEDNESDAY,
- THURSDAY,
- FRIDAY,
- SATURDAY,
- SUNDAY;
- }
- /*
- про enum посложнее - объявили класс и его значения
- каждому значению - через вызов конструктора - задали свойство - описание
- */
- public enum Day {
- MONDAY("понедельник"),
- TUESDAY("вторник"),
- WEDNESDAY("среда"),
- THURSDAY("четверг"),//<<----------------------для каждого значения enum - вызов конструктора, фактически значение = объект класса
- FRIDAY("пятница"),
- SATURDAY("суббота"),
- SUNDAY("воскресенье");
- String description;//<<---------------------------поле для хранения описания дня недели
- public Day(String description) {
- this.description = description;//<<---------------------------логика конструктора - запомнить для объекта его описание
- }
- @Override
- public String toString() {
- return description;//<<---------------------------логика - вывести для объекта - то что для него заполнили
- }
- }
- /*
- все классы - потомки класса Object (enum - это тоже класс)
- у Object есть метод toString()
- который выполняет преобразование объекта к строке
- реализовав такой метод в рамках класса SomeClass -
- используя выражения типа "day is "+ Day.MONDAY
- получишь строку "day is понедельник"
- toString() - можно грамотно использовать в рамках всех вспомогательных классов и enum-ов
- это позволит упростить код
- конструкторы в enum-ах как раз и могут помочь решению задачи
- для каждого значения enum вернуть свою строку
- попробуй применить эти подходы
- вот хороший пример
- http://javarevisited.blogspot.com/2011/08/enum-in-java-example-tutorial.html
- */
- ***************************************************
- /*
- полезные линки про классы
- http://www.tutorialspoint.com/java/java_object_classes.htm
- http://www.helloworld.ru/texts/comp/lang/java/java/07.htm
- внутренние классы (нас интересуют member inner classes)
- http://www.tutorialspoint.com/java/java_innerclasses.htm
- http://www.quizful.net/post/inner-classes-java
- http://www.javatpoint.com/java-inner-class
- */
Advertisement
Add Comment
Please, Sign In to add comment