Java05. ДЗ 03, Кравцун Андрей, подгруппа 2#37
Java05. ДЗ 03, Кравцун Андрей, подгруппа 2#37kravtsun wants to merge 10 commits intojava-course-au:03-serializable-string-setfrom
Conversation
…en tests (where it does not affect performance much).
| * @throws SerializationException in case of IOException during deserialization | ||
| */ | ||
| void deserialize(InputStream in); | ||
| void deserialize(InputStream in) throws SerializationException; |
There was a problem hiding this comment.
особого смысла в отдельном исключении нет, по желанию -- можно делать своё, можно IO
|
|
||
| public StringSetImpl() { | ||
| root = null; | ||
| } |
There was a problem hiding this comment.
этот конструктор можно убрать:
- если поле ссылочного типа нигде не инициализируется (ни в конструкторе, ни в объявлении), то ему автоматически присвоится null
- если в классе нет конструкторов, то будет создан конструктор по умолчанию (public, без параметров)
но можно и оставить, это по желанию
| out.write(1); | ||
| } else { | ||
| out.write(0); | ||
| } |
There was a problem hiding this comment.
можно тернарный оператор использовать out.write(b ? 1 : 0);
| throw new SerializationException(); | ||
| } | ||
| } | ||
|
|
There was a problem hiding this comment.
про примитивы:
- в этих методах можно было бросать IO например, а потом выше преобразовывать или оборачивать в SerializationException
- можно было заиспользовать DataInput/DataOutputStream, тогда этих методов бы не было, но оборачивать в SerializationException всё равно пришлось бы
| private static final int EMPTY_VERTEX_MAGIC = 0xDDCCBBAA; | ||
| private final Vertex[] next; | ||
| private boolean isTerminal; | ||
| private Vertex parent; |
| private static class Vertex implements StreamSerializable { | ||
| private static final int CHAR_POWER = 2 * 26; | ||
| private static final int VERTEX_MAGIC = 0xAABBCCDD; | ||
| private static final int EMPTY_VERTEX_MAGIC = 0xDDCCBBAA; |
There was a problem hiding this comment.
появление слова magic вносит неразбериху, и другому разработчику может показаться, что автор не очень понимает то, что сам написал)) в данном случае лучше использовать EMPTY_VERTEX_FLAG, NON_EMPTY_VERTEX_FLAG. Значения не очень важны, хоть 0 и 1.
| } | ||
| } | ||
|
|
||
| // Question: constructor would be better? |
There was a problem hiding this comment.
отсылаю к практике, когда обсуждались конструкторы и статик методы. мне текущий вариант больше нравится, он симметричен к методу выше
| @@ -0,0 +1,74 @@ | |||
| package ru.spbau.mit; | |||
There was a problem hiding this comment.
тесты сильно усложнять не всегда имеет смысл, лучше написать побольше простых случаев, включая какие-то крайние
@sproshev