{"action":"created","issue":{"url":"https://api.github.com/repos/CPFL/Autoware/issues/221","repository_url":"https://api.github.com/repos/CPFL/Autoware","labels_url":"https://api.github.com/repos/CPFL/Autoware/issues/221/labels{/name}","comments_url":"https://api.github.com/repos/CPFL/Autoware/issues/221/comments","events_url":"https://api.github.com/repos/CPFL/Autoware/issues/221/events","html_url":"https://github.com/CPFL/Autoware/issues/221","id":129713870,"number":221,"title":"Correct building process","user":{"login":"syohex","id":554281,"avatar_url":"https://avatars.githubusercontent.com/u/554281?v=3","gravatar_id":"","url":"https://api.github.com/users/syohex","html_url":"https://github.com/syohex","followers_url":"https://api.github.com/users/syohex/followers","following_url":"https://api.github.com/users/syohex/following{/other_user}","gists_url":"https://api.github.com/users/syohex/gists{/gist_id}","starred_url":"https://api.github.com/users/syohex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/syohex/subscriptions","organizations_url":"https://api.github.com/users/syohex/orgs","repos_url":"https://api.github.com/users/syohex/repos","events_url":"https://api.github.com/users/syohex/events{/privacy}","received_events_url":"https://api.github.com/users/syohex/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"syohex","id":554281,"avatar_url":"https://avatars.githubusercontent.com/u/554281?v=3","gravatar_id":"","url":"https://api.github.com/users/syohex","html_url":"https://github.com/syohex","followers_url":"https://api.github.com/users/syohex/followers","following_url":"https://api.github.com/users/syohex/following{/other_user}","gists_url":"https://api.github.com/users/syohex/gists{/gist_id}","starred_url":"https://api.github.com/users/syohex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/syohex/subscriptions","organizations_url":"https://api.github.com/users/syohex/orgs","repos_url":"https://api.github.com/users/syohex/repos","events_url":"https://api.github.com/users/syohex/events{/privacy}","received_events_url":"https://api.github.com/users/syohex/received_events","type":"User","site_admin":false},"milestone":null,"comments":5,"created_at":"2016-01-29T09:32:06Z","updated_at":"2016-02-11T09:47:50Z","closed_at":null,"body":"- [ ] Fix cycle dependency issues\r\n- [ ] Declare package dependency correctly. Some dependencies are not declared for avoiding build errors now.\r\n- [ ] Remove build warnings. There are some build warnings about rostest and roslaunch.\r\n\r\nCC: @manato @yukikitsukawa @syouji "},"comment":{"url":"https://api.github.com/repos/CPFL/Autoware/issues/comments/182785209","html_url":"https://github.com/CPFL/Autoware/issues/221#issuecomment-182785209","issue_url":"https://api.github.com/repos/CPFL/Autoware/issues/221","id":182785209,"user":{"login":"syohex","id":554281,"avatar_url":"https://avatars.githubusercontent.com/u/554281?v=3","gravatar_id":"","url":"https://api.github.com/users/syohex","html_url":"https://github.com/syohex","followers_url":"https://api.github.com/users/syohex/followers","following_url":"https://api.github.com/users/syohex/following{/other_user}","gists_url":"https://api.github.com/users/syohex/gists{/gist_id}","starred_url":"https://api.github.com/users/syohex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/syohex/subscriptions","organizations_url":"https://api.github.com/users/syohex/orgs","repos_url":"https://api.github.com/users/syohex/repos","events_url":"https://api.github.com/users/syohex/events{/privacy}","received_events_url":"https://api.github.com/users/syohex/received_events","type":"User","site_admin":false},"created_at":"2016-02-11T09:47:50Z","updated_at":"2016-02-11T09:47:50Z","body":"Sorry I write Japanese at first.\r\n\r\n### パッケージ間の依存を増やさないための注意\r\n\r\n#### ライブラリのヘッダファイルで messageから生成されるヘッダファイルを includeしない\r\n\r\n関連する関数を使わないパッケージでも, それを includeしてしまうと, その messageを生成するパッケージに依存してしまうことになる.\r\n\r\n#### ライブラリで messageから生成されるヘッダファイルを includeしない\r\n\r\nそれをリンクするパッケージが間接的に messageを生成するパッケージに依存してしまう. メッセージで渡ってきたデータの処理をライブラリに切り出したい場合は, メッセージの中のデータを渡すようにするなどする(std::vector型等). もしくは別途定義したメッセージに依存しない class, struct移し替える等する\r\n\r\n#### むやみにライブラリに切り出さない\r\n\r\n汎用的なもの以外は切り出さない方がいい. パッケージ間の依存を返って高めてしまう可能性がある. 別パッケージにするほど有用かをまず考える.\r\n\r\n#### その他気になったところ\r\n\r\n##### ライブラリにグローバル変数がある\r\n- ライブラリが状態を持つ\r\n - 複数スレッドで使えるのか\r\n - 状態を引数として渡すようにできるかを検討する\r\n\r\n##### ライブラリ関数の引数がない, 戻り値が void\r\n-  何のために呼び出している ?\r\n- ライブラリの状態を変化させている ?\r\n- ライブラリ関数としては引数だけに依存するものが望ましい.\r\n\r\n#### 名前が適当すぎる\r\n- namespaceを使う or ライブラリの prefixをつける\r\n\r\n"}}