すると、何のHP、Spdなのか分からなくなってしまうので修飾語をつける様にしています。便乗ですが、変数の頭を型にする規則は賛否両論あるみたいで、皆さんはどの様にしているのでしょうか。pguide.xmlこのあたりがものすごく役立つと思います.おぉ!細かい!!明日から早速読んでみますどうもありがとうございました>softya(ソフト屋)さん書く人によって様々なスタイルがありますが私も変数宣言後にインデントするのは避けたいですね。...vec_onetwo;とかonetwoが何を表しているのかさっぱりわかりません。一二点の一二なのですが...itiniとしても何やら読みづらいし、かといって他の読み方知らないし......英訳出来ないときはどうするんでしょう?itini_tenとか?これならまだ分かりますかね?あとrevelはレベル=levelのことだと思いますが自信がない英単語は出来るだけ辞書で調べましょう。覚え間違いしていることも良くあります。辞書ひくようにしますnum1,num2と言う様な意味を持たない変数名も厳禁です。した配列がnum1です。みなさんならなんて名付けますか?それと、なかなか良い変数の名前が浮かばないとき、どうしてますか?ほかはvecを付けているのにつけていない統一性のなさも問題ですね。vec_onetwo;これのことをおっしゃってるのかな?関数を定義するときにvector<int>をいちいち打ってるのがめんどくさくなったので省略化しました。構造体にS_○○クラスにC_○○という名前をつけるように、vectorにもv_○○とつけるべきですか?それと、もう2つ質問です今回のプログラムでは動きができてから、綺麗に直そうと思って綺麗に直していきました。最初からこの状態のプログラムを書けと言われたらできる気がしません。変数名等はともかく、どこを関数化するかや、同じ動作でもどう書くのが一番読みやすいか等など...皆さんはどうやっていますか?コメントはどれぐらい書きますか?以前は全く書かなかったのですが、最近気をつけてちょくちょく書くようにしています。「ソースコードを見て分かるものは書かなくてもいい」ということも聞いたことがありますが、そもそもどのレベルまでが「ソースコードを見て分かるもの」なのか分かりません。...似たようなものが多くなってくると確かにこうして行かないと処理できませんね便乗ですが、変数の頭を型にする規則は賛否両論あるみたいで、皆さんはどの様にしているのでしょうか。一二点の一二なのですが...itiniとしても何やら読みづらいし、かといって他の読み方知らないし......英訳出来ないときはどうするんでしょう?itini_tenとか?これならまだ分かりますかね?何の12点なのかという視点が抜けています。point12でもTwelvePointでも良いのですが更に何のと言う意味が欲しいです。した配列がnum1です。ReadOrderToPointでしょうか。vectorにもv_○○とつけるべきですか?蓄える物次第ですが無いより有ったほうが分かりやすいなら付けるべきです。PointToReadOrder、ReadOrderToPointと付けるなら不要だと思います。ただのnum1では直感的にintだとは思うでしょうが配列だとは思いません。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。それと、もう2つ質問です今回のプログラムでは動きができてから、綺麗に直そうと思って綺麗に直していきました。最初からこの状態のプログラムを書けと言われたらできる気がしません。変数名等はともかく、どこを関数化するかや、同じ動作でもどう書くのが一番読みやすいか等など...皆さんはどうやっていますか?作っている最中に関数化や読みやすくするにはどうするかを常に考えています。それでもやはり読みづらい物が出来る場合もあるので、それは後で見なおしてリファクタリングします。関数が30~40行を超えそうならヤバイかなぁとか、同じような処理が出てきたら関数化しようとか、プログラムが長いわけじゃけどこれ関数化すると分かりやすいなぁとか。いえば、プログラム中に出てくる直値も要注意です。3;とか入れ子が3の深さという意味でしょうか?それともlevelが深さでしょうか?だとするとnestに代入している数値の意味は?enum定義できるならenumすべきだと思います。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。行間のとり方を意識してみると少しだけ見やすくなるかもしれません。してもひとつの関数に長いプログラムを書かないとならないときは特に意識した方がいいと思います。]<-1){↓以下のような感じに。]<-1){あと、コメントもちょっと雑なところがあるかなと思いました。値を覚えておく」みたいな感じにできるとよいのではないでしょうか。それと、なかなか良い変数の名前が浮かばないとき、どうしてますか?どうしても思い浮かばなければコメントで変数の意味を説明しておくべきだと思います。あとは翻訳サイトを活用してみるのもよいと思います。コメントはどれぐらい書きますか?私のプログラムは1/4くらいはコメントですね。1行にひとつコメントを書くような書き方ではなく、クラスや関数の説明を詳細に書くようにしています。あと、どんなにめんどくさいときでも関数ひとつにつき1行は必ずコメントを残してます。個人的な開発でも、(3日前の自分はすでに他人ですので・・・)未来の自分に伝えるためにも重要です。書く人によって様々なスタイルがありますが私も変数宣言後にインデントするのは避けたいですね。8年前アルゴリズムについてはざっくり割愛しますが。処理や機能としてまとめられる部分は、できるだけまとめてしまうと見やすいです。3つに切り分ける事ができますね。データの入力が行われる時には、入れ物はすべてそろっている状態。初期化を行う時は、必要なデータはすべてそろっている状態。これを意識するだけで、可読性はずっと上がります。セキュアになりますし、デバッグも容易になります。各変数に対して細々とやったりすると、処理を追うのも大変なのはわかりますね。どこで異常値が紛れてるのか、探すのも面倒ですし、エラーコードも書きにくいです。後は、ブロックにはできるだけ明確な意味を持たせ、エラー処理等はできるだけ前に持ってくるのが定石です。文は、ちょっと乱暴ですがエラー処理に相当しますね。偽の場合、ループの意に沿わないとして、最初にトラップしておきます。//データをそれぞれ初期化revel=0;nest=1;continue;}//ここから本当にやりたいこと。関数は基本的に、上から順番に処理していく。そんで、エラー等は早めにトラップする。いうか、実際の処理を始める時にはデータに不整合等が無い事を保証する。3つに切り分ける事も含みます。言っても、そうそう都合良く行かないのが世の中ですが、こういうスタイルを一貫して持つことは、コードの可読性に大きく影響しますよ。6;とすれば良いと思います.なるほど。確かにそうすればいいですね(そういえば記憶の片隅にそんなものを見たことあるような気が)。6;みたいにしてもいいかもしれませんね。今回の場合はやらなくてぱっと分かりますが。6;みたいにしてもいいかもしれませんね。今回の場合はやらなくてぱっと分かりますが。6;とする方が見やすいですし、書くのも楽です。6;とする方が見やすいですし、書くのも楽です。6.0f;の方が少しは見やすくなるかなと思ったのです。6.0f;変数を減らすときに面倒なので私は使わないと思います。見やすいかどうかは人次第と言った所でしょうか。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。変数を減らすときに面倒なので私は使わないと思います。見やすいかどうかは人次第と言った所でしょうか。真ん中だけ消そうと思ったときにあの方法だとめんどくさいですもんね。それに、もうある程度までいっちゃうと見やすいかどうかは人それぞれになってしまいますし。8年前モノスゴイ数の返信があってびっくりしました。みなさん、どうもありがとうございます。何の12点なのかという視点が抜けています。point12でもTwelvePointでも良いのですが更に何のと言う意味が欲しいです。ReadOrderToPointでしょうか。蓄える物次第ですが無いより有ったほうが分かりやすいなら付けるべきです。PointToReadOrder、ReadOrderToPointと付けるなら不要だと思います。ただのnum1では直感的にintだとは思うでしょうが配列だとは思いません。Toがついてたらvectorってわかりますもんねnum1はintか...極力To使うようにして、使わなくても分かりやすい名前が浮かんだ時はv_つけるようにしてみます。作っている最中に関数化や読みやすくするにはどうするかを常に考えています。それでもやはり読みづらい物が出来る場合もあるので、それは後で見なおしてリファクタリングします。関数が30~40行を超えそうならヤバイかなぁとか、同じような処理が出てきたら関数化しようとか、プログラムが長いわけじゃけどこれ関数化すると分かりやすいなぁとか。いえば、プログラム中に出てくる直値も要注意です。enum定義できるならenumすべきだと思います。行間のとり方を意識してみると少しだけ見やすくなるかもしれません。↓以下のような感じに。値を覚えておく」みたいな感じにできるとよいのではないでしょうか。しても思い浮かばなければコメントで変数の意味を説明しておくべきだと思います。あとは翻訳サイトを活用してみるのもよいと思います。私のプログラムは1/4くらいはコメントですね。1行にひとつコメントを書くような書き方ではなく、クラスや関数の説明を詳細に書くようにしています。あと、どんなにめんどくさいときでも関数ひとつにつき1行は必ずコメントを残してます。個人的な開発でも、(3日前の自分はすでに他人ですので・・・)未来の自分に伝えるためにも重要です。それは実体験としてひしひしと感じましたテスト週間挟んで2週間も間が挟んだ時にコメント0のソースコード見たときの気分ったらもう...書かないなんて後からみたら解読の時間の無駄にしかなりませんもんね失礼ながら、勝手な時間の都合があり残りの方はまた返信させていただきます。確かにintだとconstの方が良いですね。MAX_LINEはconstだと思います。nest;が良い気もしますがアルゴリズムをちゃんと確認していないので違うかも知れません。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。処理や機能としてまとめられる部分は、できるだけまとめてしまうと見やすいです。3つに切り分ける事ができますね。データの入力が行われる時には、入れ物はすべてそろっている状態。初期化を行う時は、必要なデータはすべてそろっている状態。これを意識するだけで、可読性はずっと上がります。セキュアになりますし、デバッグも容易になります。わける方法は関数化以外にもあるわけですね確かに変数宣言と入力なんかは新しい入力が出てきたらその場で変数を作るなど結構行き当たりばったりでやってました。//ここから本当にやりたいこと。関数は基本的に、上から順番に処理していく。そんで、エラー等は早めにトラップする。いうか、実際の処理を始める時にはデータに不整合等が無い事を保証する。3つに切り分ける事も含みます。こっちの書きかただと本当にやりたいところのifのネスト一個少なくて済みますもんね不正なデータは途中退場、心がけてみます。言っても、そうそう都合良く行かないのが世の中ですが、こういうスタイルを一貫して持つことは、コードの可読性に大きく影響しますよ。トピックあげてから余計実感しました。一回、今回のプログラムをみなさんの助言を元によりきれいに書き換えてみたいと思ってます。手を動かせという意見は良く見ますし、正直忘れっぽいので慣れさせることにします。返信一端ここで区切らせていただきます。nest;が良い気もしますがアルゴリズムをちゃんと確認していないので違うかも知れません。nestって状態じゃないんででしょうか?たぶん状態だと思います。数字が何であってもかまわない、それを別の数字に置いても問題なく、その数字に割り当てられた意味が重要な時にenumを使うみたいな説明が入門書に書いてあったような気がします。今回の場合はnestに格納されているのは一二点なのか、上下点なのか、甲乙点なのかという意味だと思います。数字に変換するなら一二点系統の返り点に対し間にある一二点の数ということになるんですかね?でもmoji[0][]を上中下点として利用するという特殊な使い方をしているので必ずしもそうではないです。『下』(←こいつが増える)となり『下』→『中』という変化が起きます。一二点をmoji[1][]に相当させ、上下点はmoji[2][]、上中下点をmoji[0][]としています本来は上下点と上中下点は同じものなのですが、この方が楽なのでプログラム上では区別してありますとなると、やっぱり状態の意味合いが大きいように感じます。史上最悪のデスペナさんが話を広げてくださっていたようで^^私も気になる内容だったので便乗させてもらいましたw。お役に立てたなら良かったです。自分で書いたのを後で見て何やってるか分かんないことがしばしばありますそういえば、ふと思い出しましたが過去のトピックで【雑談?】他人のコードを読み解くコツとは?poppin'さんがリンク先のようにおっしゃってました。仕様書を別に書くと探したり・メンテナンスを忘れたりして大変です。それならクラスや関数の仕様が十数行のコメントに渡っていても良いのでソースコードの関数の上にでも書かれていたほうが探す手間が省けます。あとdoxygenなどを利用してドキュメントを生成する方法もあります。ソースコードに特定の書き方をすることでドキュメントをソースコードから取り出す。http://www.doxygen.jp/公開するライブラリのマニュアルを作るときなどは便利です。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。pguide.xmlを参考にさせてもらいました。vector関連の変数名はsoftya(ソフト屋)さんからもらおうと思ったのですが、元read_orderが一度も計算に出てこないのでプログラムから完璧に削除し、その分区別が楽になったのでもう少し短い名前をつけてあります。思ったことは変数名が長いとそれはそれで読みづらい気がするのですが、短くしようとして意味が伝わらなくなるのも問題でどこで折り合いをつけるべきなのか分からないということです。<<endl;}もとよりは分かりやすくなりましたかね?^^;ダメ出しなど、またあればお願いします。気になる所は●印でコメントが書いてあります。一部を直しましたが全部は見直していません。コード://●何をするプログラムか書いて欲しい。std;//●どういう働きをするかコメント//●下記のネストとレベルの関係など//●contで8と10に名前をつけたほうが良いでしょう。moji[8][10]={{"上","中","下"},{"一","二","三","四","五","六","七"},{"上","下"},{"甲","乙","丙","丁","戊","己","庚","辛","任","癸"},{"天","地","人"},{"元","亨","利","貞"},{"春","夏","秋","冬"},{"木","火","土","金","水"}};//●OneTwoで一二点処理と言いながら上下点も甲乙点処理もしています。いう意味では名前の付け方が値の本質からずれています。VecOneTwo;//●ポインタ渡しから参照に書き換えました。//●TurnToPointは名詞to名詞の形になっていないので出来れば避けてください。//●ReadOrderToPointは無いのでTurnToPointに統一。絶対位置と相対位置など明確に。場所とか順番とか違うように見える部分も修正。●{}の位置は統一しましょう。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。ミクプラは自由にリンクできます。