Как стать автором
Обновить

Комментарии 4

Можно, я покритикую код и дам советы по улучшению? Раз уж вы его опубликовали.

Код пишется для людей, и надо стараться, чтобы он был простой и логичный, легко читался. У вас это требование не выполняется.

Во-первых, код раскособочило, то ли из-за отсутствия выравнивания, то ли из-за использования табуляции. В первом случае стоит отформатировать код средствами вашей IDE либо вручную, во втором — сделать замену табов на пробелы

Во-вторых, переменным надо давать понятные, осмысленные имена, вроде:

int profit = income - expense;
int mem_used = thread.owner_process.memory_table.get_total_size();


Смотрите, как читабельно: прибыль равна доход минус расход. Хороший код так и выглядит, как читабельный текст.

У вас же названия переменных ничего не говорят:

— data_arr — любая переменная хранит данные, потому слово data ничего не значит. arr тоже не добавляет смысла. Советую взять осмысленное название, вроде memory или virtual_memory
— pzf — вообще хрен расшифруешь. Если это флаг, то стоит подумать над названием получше и добавить подробный комментарий с описанием перед переменной.

Избегайте ничего не говорящих слов вроде var, val, tmp, data, array.

Названия i и j не годятся, так как у вас большой объем кода и надо постоянно прокручивать его в начало, чтобы посмотреть, что они значат.

Также, вместо портянки if/else лучше использовать switch().

Комментариев в коде явно не хватает, хотя бы для переменных.

> while(str_arr[i] != '}' )
> i++;
Тут ошибка, возможен потенциально бесконечный цикл с крашем программы при выходе за границу выделенной вирт. памяти.

Этот код встречается часто и стоит вынести его в отдельную функцию seek_char() с проверкой на конец строки.

Пока, к сожалению, код нечитабелен. Вы потратили много времени на подготовку и написание статьи, будет жалко, если из-за плохого кода ваши усилия пропадут зря. Советую исправить.
Названия i и j не годятся

Также, вместо портянки if/else лучше использовать switch().

Согласен, но для шаблона я использовал код интерпретатора Brainfuck из Википедии.

> while(str_arr[i] != '}' )
> i++;
Тут ошибка, возможен потенциально бесконечный цикл с крашем программы при выходе за границу выделенной вирт. памяти.

Но тут программист сам уже должен следить за тем, чтобы скобки/переходы были правильно расставлены.
Спасибо.
То есть бесконечная «компиляция» вас устраивает?
Предыдущие части почему то не открываются…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации