Skip to content

Commit

Permalink
HW-2
Browse files Browse the repository at this point in the history
  • Loading branch information
Vladislav Smirnov committed Oct 19, 2018
1 parent cd3ff78 commit c3eed37
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 17 deletions.
14 changes: 14 additions & 0 deletions HW-0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# HW 0: частые ошибки и рекомендации
- Не используем глобальные переменные, лучше объявить в main() и передавать дальше как аргумент функции
- Именуем констаны, то есть не просто `i < 1000000`, а `const size_t arraySize = 1000000;`
- Но без фанатизма, именовать нужно только магические числа, которые несут смысл в коде. Например инициализация счетчика в цикле for числом 0 явно не требует именования константы. Если сомневаетесь, спрашивайте
- Таймер должен замерять __только__ суммирование матриц, вопрос про область его видимости
- Массив должен выделяться на куче, если точно не знаете как правильно это делать, лучше погуглить или спросить
- На стеке можно выделять только массивы небольшого фиксированного размера для специфических задач
- На каждый new/malloc свой delete/free
- Не перемешивать new/delete с malloc/free
- Помнить про разницу delete и delete[]
- Для размеров лучше всего использовать size_t
- size_t является беззнаковым (unsigned) целым
- Нельзя сравнивать signed и unsigned

18 changes: 4 additions & 14 deletions HW-1.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,4 @@
# HW 1: частые ошибки и рекомендации
- Не используем глобальные переменные, лучше объявить в main() и передавать дальше как аргумент функции
- Именуем констаны, то есть не просто `i < 1000000`, а `const size_t arraySize = 1000000;`
- Но без фанатизма, именовать нужно только магические числа, которые несут смысл в коде. Например инициализация счетчика в цикле for числом 0 явно не требует именования константы. Если сомневаетесь, спрашивайте
- Таймер должен замерять __только__ суммирование матриц, вопрос про область его видимости
- Массив должен выделяться на куче, если точно не знаете как правильно это делать, лучше погуглить или спросить
- На стеке можно выделять только массивы небольшого фиксированного размера для специфических задач
- На каждый new/malloc свой delete/free
- Не перемешивать new/delete с malloc/free
- Помнить про разницу delete и delete[]
- Для размеров лучше всего использовать size_t
- size_t является беззнаковым (unsigned) целым
- Нельзя сравнивать signed и unsigned

# HW 1: рекомендации
- Ошибки см. в HW-0
- Добавляем в это задание правило разделения кода на функции по смыслу
- В каждую функцию передаем массив Data и его размер Size
12 changes: 9 additions & 3 deletions HW-2.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
# HW 2: рекомендации
- Ошибки см. в HW-1
- Добавляем в это задание правило разделения кода на функции по смыслу
- В каждую функцию передаем массив Data и его размер Size
- см. HW-0 и HW-1
- При проектировании классов стараемся использовать исключения только в конструкторе. В функциях лучше возвращать bool-результат об успехе выполнения
- Если используем исключения, то используем только осмысленные классы. int, const char* и т.д. бросать запрещено
- Ловить исключение по ссылке. Ловить ... запрещено, программы у нас не настолько непредсказуемые
- Перед тем как что-то оборачивать в try-catch убедитесь, что это что-то точно бросает исключение
- Очень важно запомнить правило передачи сложных данных по ссылке
- Если ```sizeof(T) > sizeof(T*)```, то предпочтительнее передать этот объект как ```const T&```, если объект можно изменять, то ```T&```. Я буду внимательно смотреть учитывается ли сonst.
- Пример: ```sizeof(int32_t) == 4```, ```sizeof(int32_t*) == 8``` (на 64-бит системах все указатели 8), значит можно просто отправить int32_t. ```sizeof(std::vector<int32_t>) > 8``` => нужно писать ```сonst std::vector<int32_t>&```
- Не забываем проходить тест перед отправкой

0 comments on commit c3eed37

Please sign in to comment.