Собственно создаю тему в данном разделе, но скорее не потому, что код, который будет представлен ниже дерьмо, нет, в целом он более чем нормален, однако его получение подтолкнуло меня к мысли о том, что программирование это достаточно увлекательная вещь, где задачу можно решить множеством способов.
Итак, я попросил 3х людей в скайпе реализацию WriteString. Точнее хотел я получить ее быстро, но отвечали все достаточно медленно и я просто уснул, а когда проснулся получил 3 реализации данного метода. В чем его суть: первые 2 байта это short - размер строки, затем идет по 2 байта на символ. Все достаточно просто. Ники авторов я специально указывать не буду.
1)
Тут все достаточно просто: пишем H, пишем S и затем убираем из буфера хвостик в 2 байта. Не самое оптимальное решение, по моему мнению, с точки зрения: добавим 2 байта и потом их еще отрежем.
2)
Тут если честно я не совсем понимаю зачем проверять на null, если можно просто сделать длину строки равной 0, например вот так (яву знаю на уровне hello world, мб если null то вернется 0, пускай будет так):
Читаемость кода улучшится на порядок, да и простынки не будет.
3)
Вот собственно то, о чем я говорил. Быстро и удобно.
А вы что думаете об этом?
Итак, я попросил 3х людей в скайпе реализацию WriteString. Точнее хотел я получить ее быстро, но отвечали все достаточно медленно и я просто уснул, а когда проснулся получил 3 реализации данного метода. В чем его суть: первые 2 байта это short - размер строки, затем идет по 2 байта на символ. Все достаточно просто. Ники авторов я специально указывать не буду.
1)
PHP:
protected void writeString(CharSequence charSequence)
{
writeH(charSequence.length());
writeS(charSequence);
getByteBuffer().position(getByteBuffer().position() - 2);
}
2)
PHP:
public void writeString(String value)
{
if (value != null)
{
_buf.writeShortLE(value.length());
for (int i = 0; i < value.length(); i++)
{
_buf.writeChar(Character.reverseBytes(value.charAt(i)));
}
}
else
{
_buf.writeShort(0);
}
}
Тут если честно я не совсем понимаю зачем проверять на null, если можно просто сделать длину строки равной 0, например вот так (яву знаю на уровне hello world, мб если null то вернется 0, пускай будет так):
PHP:
public void writeString(String value)
{
int len = value == nul ? 0 : value.length();
_buf.writeShortLE(len );
for (int i = 0; i < len ; i++)
{
_buf.writeChar(Character.reverseBytes(value.charAt(i)));
}
}
3)
PHP:
final int len = text.length();
writeH(len);
for (int i = 0; i < len; ++i)
{
getByteBuffer().putChar(text.charAt(i));
}
А вы что думаете об этом?