Comments 28
Держите нас в курсе :)
+12
После таких слов мне становится страшно. А после минусов хочется уйти назад в «read only».
-2
Не нужно уходить в «read only», я имел ввиду, что статьи на Хабре должны нести пользу читающим. Я уверен, что все читающие статью айтишники с компьютерным образованием сами уже прошли подобные задачи в университете. То есть эта тема действительно интересна только начинающим Си-шникам
Но, если оформить эту статью как обучалку для студентов — было бы уже полезнее и минусов наставили бы гораздо меньше. Привести пример оптимизации конкретных частей кода, как было некрасиво и как стало лучше. Ну и выкинуть лишние фразы.
П.С. Сам за свою первую статью отхватил минусов кучу, т.к. не подумал что настолько простая тема не заинтересует Хабр.
Но, если оформить эту статью как обучалку для студентов — было бы уже полезнее и минусов наставили бы гораздо меньше. Привести пример оптимизации конкретных частей кода, как было некрасиво и как стало лучше. Ну и выкинуть лишние фразы.
П.С. Сам за свою первую статью отхватил минусов кучу, т.к. не подумал что настолько простая тема не заинтересует Хабр.
0
Скажите, а зачем у вас в h-нике идет «using namespace std;», а потом все равно: std::string name;
И да, в h-нике не стоит писать using… он потом куда-нить включится и у вас будут траблы с пересечением неймспейсов (boost и std немного пересекаются… например)
Вы уверены, что слово «год» — «jear» пишется именно так?=)
И да, в h-нике не стоит писать using… он потом куда-нить включится и у вас будут траблы с пересечением неймспейсов (boost и std немного пересекаются… например)
Вы уверены, что слово «год» — «jear» пишется именно так?=)
+5
Согласен. И на мой взгляд, раз уж ооп, то лучше функции переделать в классы
И еще все-таки в хедере лучше при объявлении функций указывать не только тип параметров но и их название, так проще будет ориентироваться.
Ну учил же человек немецкий а не английский, вот и смесь получилась
И еще все-таки в хедере лучше при объявлении функций указывать не только тип параметров но и их название, так проще будет ориентироваться.
Вы уверены, что слово «год» — «jear» пишется именно так?=)
Ну учил же человек немецкий а не английский, вот и смесь получилась
+1
Ну классы они может быть еще не изучали, сказано же, что задание «написать с использованием структур», хотя по сути структура это класс…
И еще можно было бы использовать std::vector вместо массива на стеке для песен
И еще можно было бы использовать std::vector вместо массива на стеке для песен
+1
std::vector мы очень поверхностно проходили. И поэтому работать толком с ним и не научились. А классов, кроме структур, у нас действительно еще не было.
0
ну да класс от структуры в с++ отличается ж только модификаторами доступа
Просто преподаватели должны были рассказать про принципы ООП, а не просто создаем объекты от их описания. Я к тому, что класс должен включать логику поведения объекта
На одной из лекций мы рассматривали ООП на примере С++ и получили задание написать псевдо-музыкальную библиотеку с использованием структур.
Просто преподаватели должны были рассказать про принципы ООП, а не просто создаем объекты от их описания. Я к тому, что класс должен включать логику поведения объекта
+1
Вы уверены, что слово «год» — «jear» пишется именно так?=)
Я английский язык знаю на уровне приставки sega и некоторых программ. Поэтому не уверен)
а зачем у вас в h-нике идет «using namespace std;», а потом все равно: std::string name;
Компилятор выдавал ошибку при записи: string name;, пришлось записывать так: std::string name;
P.S. что-то у меня с цитатами не вышло=(
Я английский язык знаю на уровне приставки sega и некоторых программ. Поэтому не уверен)
а зачем у вас в h-нике идет «using namespace std;», а потом все равно: std::string name;
Компилятор выдавал ошибку при записи: string name;, пришлось записывать так: std::string name;
P.S. что-то у меня с цитатами не вышло=(
0
Ещё можно заменить кучу if на switch и:
на
Будет уровень вложенности меньше для основной части кода, и читать удобнее.
for(int i=0; i<pos; i++){
if(str==muslib[i].name){
cout<<"Position "<<muslib[i].num<<endl;
cout<<"Name "<<muslib[i].name<<endl;
cout<<"Artist "<<muslib[i].artist<<endl;
cout<<"Time "<<muslib[i].time<<endl;
cout<<"Jear "<<muslib[i].jear<<"\n"<<endl;
notfound=notfound+1;
}
}
на
for(int i=0; i<pos; i++){
if(str!=muslib[i].name){
continue;
}
cout<<"Position "<<muslib[i].num<<endl;
cout<<"Name "<<muslib[i].name<<endl;
cout<<"Artist "<<muslib[i].artist<<endl;
cout<<"Time "<<muslib[i].time<<endl;
cout<<"Jear "<<muslib[i].jear<<"\n"<<endl;
notfound=notfound+1;
}
Будет уровень вложенности меньше для основной части кода, и читать удобнее.
-4
Возьму на заметку. А про continue; еще нужно почитать. Не было у нас на парах использования подобного. Тут наверное только мануал мне в помощь :)
-3
Ещё можно заменить кучу if на switch
Емнип в c++ из коробки так сделать со строками нельзя
0
Неа, нельзя…
Неа, не удобнее…
Неа, не удобнее…
+1
Насколько помню(на сях давно уже не писал) switch работает медленее if + там есть ограничения по сравнению, вроде только числа. На типезированых языках switch иногда может делать неприкольные касты, делая например из строки число 0(было в какойто версии php). Вообщем после всего этого switch не юзаю принципиально, меньше гемора.
0
>> То что может заставить Вас ужаснутся!
Действительно ужасает. Вы и вместо русского немецкий учили?
Действительно ужасает. Вы и вместо русского немецкий учили?
+5
Меня больше это ужасает:
«Сидя на каникулах дома и скучая за быстрым интернетом в общежитии, родилась гениальная идея переписать данную программу с использованием функций. Это было мое больное место. За полтора года обучения я так и не научился их использовать.»
«Сидя на каникулах дома и скучая за быстрым интернетом в общежитии, родилась гениальная идея переписать данную программу с использованием функций. Это было мое больное место. За полтора года обучения я так и не научился их использовать.»
+3
Вместо русского — украинский (в первом примере транслит как раз украинского языка)
Вместо английского — немецкий, здесь думаю понятно.
Вместо английского — немецкий, здесь думаю понятно.
+1
Конечно тут есть еще что оптимизировать. Посмотрите на повторяемость кода, например вот этот кусок часто повторяется, его можно было бы вынести в отдельную функцию. То есть принцип DRY не реализуется.
Используйте для названия функций говорящие имена, helpf, ref,allf какие то странные аббревиатуры, почему нужно обязательно f добавлять непонятно. Например, AddToNumbers, SearchForName говорящие названия.
Комментировать код тоже хорошая привычка. Пояснять, что делает данная функция, для чего она нужна полезно не только для других, но и для себя, для лучшего понимания работы программы.
Мне кажется вместо длинного while можно было бы использовать массив или хэш, опять же повторяемость кода там достаточно высокая.
cout<<"Position "<<muslib[i].num<<endl;
cout<<"Name "<<muslib[i].name<<endl;
cout<<"Artist "<<muslib[i].artist<<endl;
cout<<"Time "<<muslib[i].time<<endl;
cout<<"Jear "<<muslib[i].jear<<"\n"<<endl;
Используйте для названия функций говорящие имена, helpf, ref,allf какие то странные аббревиатуры, почему нужно обязательно f добавлять непонятно. Например, AddToNumbers, SearchForName говорящие названия.
Комментировать код тоже хорошая привычка. Пояснять, что делает данная функция, для чего она нужна полезно не только для других, но и для себя, для лучшего понимания работы программы.
Мне кажется вместо длинного while можно было бы использовать массив или хэш, опять же повторяемость кода там достаточно высокая.
0
Я как-то не подумал сделать этот кусок кода одной функцией.
>> почему нужно обязательно f добавлять
Чтобы ориентироваться что это функция, а не переменная написана.
>> массив или хэш
Сказать честно: не могу представить как здесь применить массив. Про хэш вообще молчу. Говорить: «Нам такого не показывали»,- бессмысленно.
>> почему нужно обязательно f добавлять
Чтобы ориентироваться что это функция, а не переменная написана.
>> массив или хэш
Сказать честно: не могу представить как здесь применить массив. Про хэш вообще молчу. Говорить: «Нам такого не показывали»,- бессмысленно.
0
Так сигнатура у переменных и функций разные ) вы всегда их отличите.
Еще пару советов. Учите английский, в программировании вся литература хорошая на английском, если не собираетесь программировать под 1с, то все это очень пригодится. Аргумент нам такого не показывали конечно не убедителен, там все не сложно, массив — набор значений, хэш — набор значений в виде ключ-значение (key-value). Опять же можно почитать книжки на каникулах или на выходных, в свободном доступе на русском языке есть достаточно много хороших.
Еще пару советов. Учите английский, в программировании вся литература хорошая на английском, если не собираетесь программировать под 1с, то все это очень пригодится. Аргумент нам такого не показывали конечно не убедителен, там все не сложно, массив — набор значений, хэш — набор значений в виде ключ-значение (key-value). Опять же можно почитать книжки на каникулах или на выходных, в свободном доступе на русском языке есть достаточно много хороших.
0
А меня одного настораживает, что последнее время на хабре инвайты получают такие статьи? То, про то как человек «впихнул» кулер LGA1155 на материнку 775, то про решение лабораторной на C++. Заминусуют конечно, но [sarcasm]Хабр уже не торт[/sarcasm].
+16
Вы изменили свой комментарий, хотел бы я видеть первую его версию.
Ну а насчет статьи и приглашений, так ведь это же из той-же оперы, как начинался Facebook. Там тоже сначала все было очень 'эксклюзивно', а сейчас вроде 1/7 населения там счета имеет.
По теме статьи: хотел бы я знать зачем над людьми издеваются в университетах? Для курса «математика, информатика и математическое моделирование» намного более полезным было бы изучать MATLAB, а не C++. Пичкать людей OOP и пр. идеями, когда они даже функций не знают, вот это странное занятие. Если уж не MATLAB, то что нибудь попроще могли бы им показывать, тот же Паскаль.
Ну а насчет статьи и приглашений, так ведь это же из той-же оперы, как начинался Facebook. Там тоже сначала все было очень 'эксклюзивно', а сейчас вроде 1/7 населения там счета имеет.
По теме статьи: хотел бы я знать зачем над людьми издеваются в университетах? Для курса «математика, информатика и математическое моделирование» намного более полезным было бы изучать MATLAB, а не C++. Пичкать людей OOP и пр. идеями, когда они даже функций не знают, вот это странное занятие. Если уж не MATLAB, то что нибудь попроще могли бы им показывать, тот же Паскаль.
0
Your post gave me cancer… :/
-1
Sign up to leave a comment.
Работа со структурами или как я учился писать читабельный код