{"action":"created","issue":{"url":"https://api.github.com/repos/katorina/TelephoneBook/issues/7","repository_url":"https://api.github.com/repos/katorina/TelephoneBook","labels_url":"https://api.github.com/repos/katorina/TelephoneBook/issues/7/labels{/name}","comments_url":"https://api.github.com/repos/katorina/TelephoneBook/issues/7/comments","events_url":"https://api.github.com/repos/katorina/TelephoneBook/issues/7/events","html_url":"https://github.com/katorina/TelephoneBook/issues/7","id":308345354,"number":7,"title":"Upgrade impl.","user":{"login":"JohnKhandygo","id":2545754,"avatar_url":"https://avatars3.githubusercontent.com/u/2545754?v=4","gravatar_id":"","url":"https://api.github.com/users/JohnKhandygo","html_url":"https://github.com/JohnKhandygo","followers_url":"https://api.github.com/users/JohnKhandygo/followers","following_url":"https://api.github.com/users/JohnKhandygo/following{/other_user}","gists_url":"https://api.github.com/users/JohnKhandygo/gists{/gist_id}","starred_url":"https://api.github.com/users/JohnKhandygo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JohnKhandygo/subscriptions","organizations_url":"https://api.github.com/users/JohnKhandygo/orgs","repos_url":"https://api.github.com/users/JohnKhandygo/repos","events_url":"https://api.github.com/users/JohnKhandygo/events{/privacy}","received_events_url":"https://api.github.com/users/JohnKhandygo/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2018-03-25T12:23:52Z","updated_at":"2018-04-13T22:59:59Z","closed_at":null,"author_association":"NONE","body":"- [x] Вашу программу не получится использовать извне как библиотеку из-за использованных модификаторов области видимости для разработанных классов и методов в них.  \r\n- [x] Если значения полей не меняются, стоит использовать модификатор `final` при их объявлении. Это позволяет избавиться от достаточно дурацких ошибок. \r\n- [ ] Либо метод `TelephoneBook::addUser` реализован некорректно, либо все остальные методы в `TelephoneBook` не учитывают того, что в списке `users` может быть несколько контактов с одинаковым номером.\r\n- [ ] Метод `TelephoneBook::addUser` допускает добавление контактов с разными именами, но одинаковыми номерами.\r\n- [ ] Для того, чтобы воспользоваться методом `TelephoneBook::deleteUser`, мне надо сконструировать целый объект `User` (а ведь ему может соответствовать несколько номеров). К тому же, Вы не реализовали `equals` в классе `User`, так что воспользоваться этой функцией становится почти невозможно. \r\n- [ ] Подумайте, может ли метод `User::getNumbers` каким-либо образом \"сломать\" Вашу реализацию. Если да, то как?\r\n- [x] В методе `User::transformNumber` много ошибок. \r\n  - Для того, чтобы проверить, соответствует ли строка регулярном выражению существует метод [matches](https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#matches(java.lang.String)). Делать это через `replaceAll` просто верх безумства.\r\n  - В коде не должно быть вызовов `System.out.println`. Если Вам необходимо логирование действий программы, то стоит использовать специальные библиотеки. Если Вам необходимо отладить программу, для этого существует специальный режим запуска программы --- [debug](https://www.jetbrains.com/help/idea/debugging.html).\r\n  - В принципе изменение номера --- не самая лучшая идея. Как пользователь, я бы ожидал, что приписав некий номер контакту, я могу использовать этот же самый номер для того, чтобы найти соответствующий контакт, однако в `TelephoneBook` Вы не поддерживаете преобразование номеров. \r\n  - Если формат номера некорректен, то получаем в телефонной книге запись с номером `null`. С точки зрения логики это как-то совсем неправильно.\r\n   - Формат номера, который Вы придумали не совсем правильный. После `#` может идти добавочный номер (то есть последовательность только цифр). Если символ `#` присутствует в номере, то он должен быть единственным. Символы `+` и `*` могут стоять только в самом начале номера и нигде больше, при этом только один из этих символов. Замена `8` на `+7` --- Тоже спорная затея, однако это можно оставить. \r\n  Учитывая все вышесказанное, я бы предложил следующий алгоритм: убрать из `number` все `-`, проверить формат полученной строки и, если все хорошо, то добавлять номер без `-` в книгу. Если все плохо, то надо что-то придумать, но точно не `null` возвращать.  \r\n- [x] Метод `User::addNumber` реализован крайне странно. Вы же можете проверить наличие такого же номера до того, как добавлять его.\r\n- [x] Вообще в задании нигде не сказано, что не может быть контакта без номеров. Если Вам это по какой-то причине кажется неприемлемым, значит это должно быть как-то доступно для пользователя Вашей билиотекой, Вы же просто игнорируете запрос на удаление номера, пользователь не знает, что Вы ничего не удалили и причин этого тоже не знает.\r\n- [x] Методы `User::addNumber` и `User:deleteNumber` используются только в тестах. Они точно Вам нужны?\r\n- [x] Методы, изменяющие `User` и `TelephoneBook` не дают возможности программно узнать, были ли в действительности произведены какие-либо изменения (например, был ли пользователь действительно удален или его просто не существовало).\r\n- [x] В классах `TelephoneBook` и `User` отсутствуют реализации методов `toString`, `equals` и `hashCode`."},"comment":{"url":"https://api.github.com/repos/katorina/TelephoneBook/issues/comments/381280039","html_url":"https://github.com/katorina/TelephoneBook/issues/7#issuecomment-381280039","issue_url":"https://api.github.com/repos/katorina/TelephoneBook/issues/7","id":381280039,"user":{"login":"katorina","id":32110208,"avatar_url":"https://avatars0.githubusercontent.com/u/32110208?v=4","gravatar_id":"","url":"https://api.github.com/users/katorina","html_url":"https://github.com/katorina","followers_url":"https://api.github.com/users/katorina/followers","following_url":"https://api.github.com/users/katorina/following{/other_user}","gists_url":"https://api.github.com/users/katorina/gists{/gist_id}","starred_url":"https://api.github.com/users/katorina/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/katorina/subscriptions","organizations_url":"https://api.github.com/users/katorina/orgs","repos_url":"https://api.github.com/users/katorina/repos","events_url":"https://api.github.com/users/katorina/events{/privacy}","received_events_url":"https://api.github.com/users/katorina/received_events","type":"User","site_admin":false},"created_at":"2018-04-13T22:59:59Z","updated_at":"2018-04-13T22:59:59Z","author_association":"OWNER","body":"Вроде всё.\r\nНасчет getNumbers(): раньше возвращаемый список можно было изменить извне, а теперь возвращается копия оригинального массива."}}
{"actor":{"display_login":"katorina"}}