###C++ の記述スタイルから C を排除するためには
文系卒からプログラムの世界に身を投じて、1.5年のモノです。
C から始まり、半年後に C++ に移行しました。
プロジェクトで開発しているコードがおおよそ理解出来た為、
他の人はどのような記述をしているのか、また自身の記述力を上げようとオープンソースを読み始めました。
最初に出会った、Folly: Facebook Open-source Library を見た時、
自分の C++ が C であると感じました。
C++ の基礎知識は一通り習得し終えたつもりでしたが、
自分が使用したことがない C++ の記述方式・テクニック等が多くありました。
置かれている環境だけで知識を身につけると、
環境に強く染まったスタイルになると痛感しました。
・C++ の記述スタイルから C を排除するための方法、意識すること。
・C++ の記述力を上げるために行っていること (行ったこと)。
みなさんは、どのようにしていますか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/09/23 11:45 編集
回答6件
0
ベストアンサー
こんにちは。
C++ の基礎知識は一通り習得し終えたつもりでしたが、
自分が使用したことがない C++ の記述方式・テクニック等が多くありました。
C++は奥深いですから、それは至極当然と思います。
C++のコア言語だけでも奥深いですし、STLの広がりは凄まじいです。
C言語時代からあるプリプロセッサでさえ驚くような使い方もあります。
C++の全てを使いこなせる人って本当に存在するのだろうか?と疑問に感じる程です。(C++の言語仕様をマスターしている人はそこそこいると思います。それも凄いと思いますが、「全て」使いこなすとなると半端なく難しいと思います。)
C++ の記述スタイルから C を排除するための方法、意識すること。
この努力はしたことはないです。
最初のころはC言語で記述できる場合はC言語で記述してました。
ある程度C++を悟ってきたところで、C言語とC++には思想的な大きな差があることに気が付きました。
C言語は全てをプログラマが制御します。プログラマの注意力を多量に消費するためどうしても生産性が上がりませんが、低メンテナンス性高性能なプログラムを比較的容易(深い知識なし)に開発できます。
C++は言語側でプログラマのミスをできるだけ検出するよう設計されていますが性能を上げるためには言語の働きを深く把握する必要があります。特にミス検出と性能がぶつかった時は性能を取る言語ですので、知らないと酷い目にあいます。
そのミス検出機能をなるべく有効活用しつつ、性能を上げるよう心がけてます。
private、const、参照、std::unique_ptr、RAIIパターン、右辺値参照、テンプレート・メタ・プログラミングなどなどを適切に使う感じです。
標準ライブラリは便利なものの存在を知ったら、積極的に使ってます。なかなか網羅できていませんが。
投稿2017/09/23 11:00
編集2017/09/23 11:01総合スコア23272
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/09/23 12:18 編集
退会済みユーザー
2017/09/23 12:08
退会済みユーザー
2017/09/23 12:11
2017/09/23 13:04
0
LL言語かJava, C#でGCのありがたみを知る。→C++ってGC使えなくね?でもコンテナがあるからいっか。なんかCよりきれいに書けなくね?(ヤホー)
投稿2017/10/07 13:17
総合スコア667
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/07 14:01
2017/10/07 15:47
2017/10/07 15:55
2017/10/07 15:56
2017/10/07 16:05
退会済みユーザー
2017/10/08 06:18 編集
退会済みユーザー
2017/10/08 03:48 編集
2017/10/08 03:46
0
(これは質問への直接的な回答ではありませんが、参考情報として)
C++言語がどのような設計方針の下で設計され、進化してきたかに触れる読み物として書籍「C++の設計と進化」がおすすめです。原著1994年/訳本2005年と古い書籍ですが、十分読み応えがあるかと思います。
よりC++らしいプログラミングの定義は、個人やチームの知識・スキル、対象プロダクトのライフサイクルで事情が異なるでしょうから、一概に良し悪しを決めるのは難しいかと思います。一つの指針として、ISO C++標準化委員会が中心となって作られ始めた "C++ Core Guidelines" というガイドライン文書が存在します。
・C++ の記述力を上げるために行っていること (行ったこと)。
C++言語は良くも悪くも、プログラマへ多様な選択肢を提供する自由度の高い言語です。ある時代に考案されたイディオムやテクニックも、言語自体が進化(バージョンアップ)することで陳腐化してしまうこともあります。プログラミング言語は便利な道具の一つですから、最新の知識を仕入れつつ、手元のコードベースに適用できそうなものから漸近的に取り入れていけばよいと思います。
投稿2017/10/11 02:07
総合スコア6189
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
解決済みですが一言。
C++らしく書きたい、とは常に思うところではありますがなかなかそうはいきません。これはコーディングの話ではなく、設計によるところも大きいです。しかも設計変更などもあるとコーディングを統一することは難しいです。単に記法だけの問題ではないと思います。
投稿2017/10/07 16:23
総合スコア4830
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/10/08 06:18 編集
2017/10/08 14:00 編集
0
オブジェクト指向設計を
UMLで行なってから
実装するのがいいかと
C/構造化設計とC++/OO指向設計は
設計の手順が基本的にちがう
はずです
投稿2017/09/26 01:05
総合スコア14
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/10/08 06:19 編集
0
「Cを排除する」必要はありません。C++で書いていても状況に応じてC言語っぽく記述することはよくあります。C++はCをベースにオブジェクト指向を取り入れて拡張した言語なので、「CとC++のどちらを取るか」という問題にはなり得ません。オブジェクト指向を理解していけば、自然と「C++の記述スタイル」になっていきます。
手っ取り早く「C++っぽい記述スタイル」にしたいのであれば、C標準関数ではなくC++標準ライブラリー、特にSTL(Standard Template Library)を使うようにすれば、C++らしさが醸し出せると思います。STLはその名の通りテンプレートを利用したライブラリーなのですが、テンプレートはC++を特徴付ける機能の一つでもあり、Cとは一線を画する記述スタイルになります。特にコンテナ(vector、list等)とalgorithmは使用頻度が高く、使いこなせば実装効率が格段に上がるので、積極的に使いましょう。
投稿2017/09/24 00:51
総合スコア5938
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。