{"action":"opened","issue":{"url":"https://api.github.com/repos/intmpg/TvimsDefence/issues/1","labels_url":"https://api.github.com/repos/intmpg/TvimsDefence/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/intmpg/TvimsDefence/issues/1/comments","events_url":"https://api.github.com/repos/intmpg/TvimsDefence/issues/1/events","html_url":"https://github.com/intmpg/TvimsDefence/issues/1","id":122133099,"number":1,"title":"Замечания по коду игры","user":{"login":"sergey-shambir","id":1856842,"avatar_url":"https://avatars.githubusercontent.com/u/1856842?v=3","gravatar_id":"","url":"https://api.github.com/users/sergey-shambir","html_url":"https://github.com/sergey-shambir","followers_url":"https://api.github.com/users/sergey-shambir/followers","following_url":"https://api.github.com/users/sergey-shambir/following{/other_user}","gists_url":"https://api.github.com/users/sergey-shambir/gists{/gist_id}","starred_url":"https://api.github.com/users/sergey-shambir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sergey-shambir/subscriptions","organizations_url":"https://api.github.com/users/sergey-shambir/orgs","repos_url":"https://api.github.com/users/sergey-shambir/repos","events_url":"https://api.github.com/users/sergey-shambir/events{/privacy}","received_events_url":"https://api.github.com/users/sergey-shambir/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-12-14T21:16:40Z","updated_at":"2015-12-14T21:16:40Z","closed_at":null,"body":"- размещать код обычных функций в заголовочных файлах - посредственное решение, такой файл потом можно включить только в один CPP. Код из game.h следует перенести в game.cpp, при этом объявления функций оставить в game.h\r\n- код функции startGame слишком большой. Часть её подзадач (инициализация, обработка ввода, рисование) можно вынести в отдельные функции, а кое-где код и вовсе можно сократить. Вот эти объявления явно лишние:\r\n```cpp\r\nstd::list<Entity*>::iterator it;\r\nstd::list<Entity*>::iterator it2;\r\n```\r\nитераторы можно объявлять в месте использования, в том числе с помощью auto, а можно и вообще их не использовать благодаря range based for: http://en.cppreference.com/w/cpp/language/range-for\r\nКод, который сейчас лежит в game.h в строках 147-180, следует перевести с итераторов на range based for.\r\n- для всех остальных h файлов также следует создать парные cpp файлы и перенести туда определения функций, оставив в h только их объявления.\r\n\r\nP.S. про различие между объявлениями и определениями функций см. Бъёрн Страуструп, Язык Программирования C++, глава 7."}}