LINUX.ORG.RU

История изменений

Исправление soomrack, (текущая версия) :

Я очень открыт к новому, потому что я не считаю себя проф. программистом (хотя, тут формально есть разные критерии, если судить по количеству интернет трафа, людей, которое прошло через мой код, то я в топ 10% точно попаду… в некоторые года), но это решение конкретных сиюминутных практических задач, а не фундаментальный код… Разница, конечно, чудовищна между этими областями…

И объективно говоря, я очень плохо знаю С++, но меня спасает то, что я обычно стараюсь понять до той степени, в которой это необходимо для решения задачи.

На самом деле, ничего криминального в таких for-лупчиках нет, и зачастую это остаётся самым быстрым способом итерации (если сомневаетесь - посмотрите на disasm, я это делаю регулярно - очень познавательно).

И да, и нет. Касательно этого примера – for с массивом вполне приемлим для ряда задач, особенно когда нужно быстродействие, но тут есть нюансы, которые сегодня недопустимо уже делать:

int s=0;
for(i=0;i<100;++i){ if(l[i]<6 && l[i]>2) ++s; }
  1. форматирование, оно отстутсвует

  2. именование переменных – просто дно, i если и можно употреблять, то только для мнимой единицы, l – нельзя. Однажды я три дня отлаживал программу в которой в одном месте вместо l было написано 1.

  3. magic constants

А если говорить про обработку данных, когда нет жесткого требования по быстродействию, то код

const auto success = std::count_if(values.begin(), values.end(), 
                            [](int val) { return val > 2 && val < 6; });

или с «range» выглядит гораздо понятней (2 и 6 тоже закинуть в переменные с нормальным названием). И гораздо гибче, нет жесткой привязки к типам, это обычное высокоуровневое абстрактное программироание, когда код отражает то, что хочется получить без привязки к типу данных и магическим константам…, с контролем выхода за границы массивов и пр.

По поводу быстродействия ООП… Был у меня опыт по потреблению памяти и скорости, в 2-3 раза было лучше сделать на структурах в c-style… рекламный движок делали… с ооп в те времена в оперативу не влезли :)

Исходная версия soomrack, :

Я очень открыт к новому, потому что я не считаю себя проф. программистом (хотя, тут формально есть разные критерии, если судить по количеству интернет трафа, людей, которое прошло через мой код, то я в топ 10% точно попаду…), но это решение конкретных сиюминутных практических задач, а не фундаментальный код… Разница, конечно, чудовищна между этими областями…

И объективно говоря, я очень плохо знаю С++, но меня спасает то, что я обычно стараюсь понять до той степени, в которой это необходимо для решения задачи.

На самом деле, ничего криминального в таких for-лупчиках нет, и зачастую это остаётся самым быстрым способом итерации (если сомневаетесь - посмотрите на disasm, я это делаю регулярно - очень познавательно).

И да, и нет. Касательно этого примера – for с массивом вполне приемлим для ряда задач, особенно когда нужно быстродействие, но тут есть нюансы, которые сегодня недопустимо уже делать:

int s=0;
for(i=0;i<100;++i){ if(l[i]<6 && l[i]>2) ++s; }
  1. форматирование, оно отстутсвует

  2. именование переменных – просто дно, i если и можно употреблять, то только для мнимой единицы, l – нельзя. Однажды я три дня отлаживал программу в которой в одном месте вместо l было написано 1.

  3. magic constants

А если говорить про обработку данных, когда нет жесткого требования по быстродействию, то код

const auto success = std::count_if(values.begin(), values.end(), 
                            [](int val) { return val > 2 && val < 6; });

или с «range» выглядит гораздо понятней (2 и 6 тоже закинуть в переменные с нормальным названием). И гораздо гибче, нет жесткой привязки к типам, это обычное высокоуровневое абстрактное программироание, когда код отражает то, что хочется получить без привязки к типу данных и магическим константам…, с контролем выхода за границы массивов и пр.

По поводу быстродействия ООП… Был у меня опыт по потреблению памяти и скорости, в 2-3 раза было лучше сделать на структурах в c-style… рекламный движок делали… с ооп в те времена в оперативу не влезли :)