
Denis
05.06.2016
13:18:07
Я слышал, что в Telegram одни олимпиадники и пишут сложно, но тут вроде ок)

Aleh
05.06.2016
13:18:34
так webogram неофициальный же, не?
или уже официальный?

localvoid
05.06.2016
13:20:56

Google

Aleh
05.06.2016
13:22:13
к коду надо спеку писать, а не комментарии -_-

localvoid
05.06.2016
13:22:34
типичный вебдев

Aleh
05.06.2016
13:25:38
а, ну размещено на telegram.org, значит официальный)

Denis
05.06.2016
13:25:54

localvoid
05.06.2016
13:26:20

Denis
05.06.2016
13:26:53
Нет конечно же :)
Дело в том, что у большинства программистов не очень хорошо получается писать понятный текст. Поэтому то, что называется "самодокументируемый" код чаще всего лучше работает. Опять же, README и базовые вещи описанные отдельно всё равно необходимо, особенно для ввода в проект.

Alexey
05.06.2016
13:30:31
отсутствие доков в слаботиповом языке

Aleh
05.06.2016
13:30:39

Alexey
05.06.2016
13:30:43
такая себе история

Denis
05.06.2016
13:31:23
Если мы возмём React, важность типов переоценена. Разве propTypes не являются спекой?

Aleh
05.06.2016
13:31:41
@DenisIzmaylov под спекой я подразумеваю unit-test
в форме спеки )

Google

Denis
05.06.2016
13:32:13
А вот это да. Но тут схожая проблема - кейсы для тестирования. Можно сделать юнит-тест, в котором проверяется соответствие render заданному HTML и всё.
Coverage конечно решит отчасти)
Но не гарантирует все кейсы
Кто-то недавно писал статью, что тестирования нужно всегда с рандомными данными, иначе смысл тестов теряется
Образно говоря, brute force на поиск ошибки )

Aleh
05.06.2016
13:35:05
ну, вот что у нас в команде стараемся использовать(кроме попыток к tdd, но не всегда получается и не всегда нужно). Если вдруг ты захотел к своему коду написать комментарий или к старому коду, вынеси это в спеку и покрой тестом(а потом как у Фаулера написано, пробуй рефакторить). Плюс таких описательных спек в том, что они напоминают о себе, в отличие от простых комментов

Alexey
05.06.2016
13:36:04
Правда от методологии БЭМ никто не отказывается

Gordey
05.06.2016
13:37:12

Denis
05.06.2016
13:38:08

Aleh
05.06.2016
13:38:35
Gordey банальный it throws exception if first arg less than second
"Пишем тесты для тестов"?)
не знаю кто как, но у нас тесты для проектирования внешнего api разрабатываемых компонент, для возможности refactoring'a
@DenisIzmaylov да и в тестах же не всегда надо сравнить вход-выход. Например, во фронте да и вообще мало где принято использовать мутационное тестирование. Да что уж там, 100% покрытие мало где нужно, откровенно говоря, потому что цена ошибки у нас гораздо меньше, заплатку можно вылить в течение 5 минут, а то и меньше. Вот электронщикам надо загоняться, потому что отозвать платы на миллионы долларов не покатит, а мы, если затянем разработку на 10 и более % по времени просто потратим деньги бизнеса, хотя теже ошибки могли найти гораздо дешевле

Denis
05.06.2016
13:47:13

Aleh
05.06.2016
13:47:14
тут конечно я не спорю, что есть сферы, где нужно сделать полную верификацию, но это гораздо более редкий случай для нашей области

Denis
05.06.2016
13:48:33
Конечно, я же в пример привёл именно код внутреннего модуля, как пример неплохого самодокументируемого кода по бизнес-логике, а не стэк интеграции :)

Aleh
05.06.2016
13:48:50
процесс проектирования внешнего(для юнита) api:
1. создаем файл спеки
2. пишем хочу чтобы оно делал так
3. имплементим
4. хочу, чтобы оно еще делало так, если было изначально вот так
5. имплементим
и т.д.

Google

Aleh
05.06.2016
13:49:44
вот эти 2 и 4 явно описываются в тесте и самим тестом, поэтому получается, что и комментарий не нужен
ну при этом все советы из clean code и всего такого

Denis
05.06.2016
13:50:18
А что за clean code? Какие советы?

Aleh
05.06.2016
13:50:44
ну я про книжку
дяди Боба)

Gordey
05.06.2016
13:53:20
старина Мартин

Aleh
05.06.2016
13:54:07
вообще, опять же, все зависит от задач, которые возлагаются на тесты
у нас - документирование кода + проверка внешнего api, помогает не писать комменты и спокойно рефакторить в будущем
я может не полностью доступно объяснил, чего я придерживаюсь: против комментов разбросанных по коду, за самодокументируемый код, за тесты, описывающие покрываемые кейсы :)

Alexey
05.06.2016
14:16:42
Согласен, комменты в коде неочень хорошо.

Dmitry
05.06.2016
14:29:38
Можете подсказать, как бы вы лучше всего организовали апдейт локального стейта компонента при изменении пропсов, если при этом нужно смотреть на рефы и в componentWillReceiveProps их в этот момент еще нет ( рендерятся после получения тех пропсов )

Dmitry
05.06.2016
14:29:40
?

Vladimir
05.06.2016
14:59:46
звучит странно, честно говоря.
а что надо смотреть в рефах?

Dmitry
05.06.2016
15:03:27
размеры элементов, мне при запросе приходит несколько сущностей и нужно их все нарисовать, чтобы при этом на экране было видно изначально только первую, а до остальных можно было доскролить

Vladimir
05.06.2016
15:05:01
я бы сделал так. каждый реф - это компонент, который умеет сообщать о своем ресайзе через коллбек. родительский элемент хранит это значение в стейте и в лайфцайкл методах работает со стейтом
ну либо <img ref={c=>this.imageMounted(c)}/>

Dmitry
05.06.2016
15:06:43
Поковыряю, спасибо

Aleksey
05.06.2016
17:34:25

Google

Roman
05.06.2016
17:36:18

Aleksey
05.06.2016
17:37:17
Я заебался уже переписывать очевидные места,а потом наступать на грабли из-за за того что нельзя было так писать по причинам которые я не зафиксировал.

Aleh
05.06.2016
17:37:39
внезапно для этого тесты, а не коменты

Aleksey
05.06.2016
17:37:55
Я за тесты, но ими не покажешь всего.

Aleh
05.06.2016
17:38:28
например?

Admin
ERROR: S client not available

Aleksey
05.06.2016
17:40:31
Например либу которую ты используешь с багом, есть ишью который вот вот решится, ты делаешь заплатку, пишешь // TODO: пока вот так, см. сюда: https://github...

Aleh
05.06.2016
17:40:50
ну, и в чем проблема покрыть это в тесте?
я серьезно, ровно тоже самое, но не в комменте, а в спеке+проверили, что этот баг мы правильно хендлим
при рефакторинге это еще и проверится

Aleksey
05.06.2016
17:48:44
Лан, убедил :D Я ленив на такие тесты.

Vladimir
05.06.2016
17:54:46
все же места вроде
// regexp for email
/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i
лучше комментить

Aleh
05.06.2016
17:59:04
const emailRegex = //;
еще варианты)

[Anonymous]
05.06.2016
17:59:20
Из-за таких вот у меня и не принимают мой email
http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html

Aleh
05.06.2016
18:01:54
имхо для клиента const emailRegex=/^.+@.+\..+$/

Google

anoru
05.06.2016
18:06:31
Вы чего, комменты в коде очень даже нужны. Прямо представил гигантские компоненты без единой строчки кода
комментов

[Anonymous]
05.06.2016
18:07:18

Andrey
05.06.2016
18:07:21
компоненты должны быть небольшими, к слову

anoru
05.06.2016
18:07:48
выше кто-то кидал компонент на 10к строк. Или это не в этом чате)

Andrey
05.06.2016
18:08:04
лол

Aleh
05.06.2016
18:15:05
на клиенте для подсветки надо только помочь пользователю не ошибиться, если он забыл точку или собаку

Alexander
05.06.2016
18:32:59

Alexey
05.06.2016
18:51:27

Евгений
05.06.2016
18:54:36

Aleh
05.06.2016
18:55:41

Евгений
05.06.2016
18:59:49

Alexey
05.06.2016
19:01:36
Но я про комментарии в коде
Описание функции / модуля — ок

Евгений
05.06.2016
19:02:58