-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Vladislav Smirnov
committed
Oct 19, 2018
1 parent
cd3ff78
commit c3eed37
Showing
3 changed files
with
27 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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>&``` | ||
- Не забываем проходить тест перед отправкой |