IT ニュース&コラム 2018/ 9/10 通巻771号 技術版 ソフトウェアデザイン館 Sage Plaisir 21  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ■■ 関数の引数は入力と出力だけじゃない - リーダブル コード(53) ■■ 本コラムの765号で、ソースファイルに記述するの関数の引数の名前の前に、 入力であるか出力であるかを示すコーディングルール(推奨にするべきこと だがルールと言われている)を紹介しました。 たとえば、以下のように in_ や out_ を付けるルールです。 ・親の名前を表す入力引数 … in_ParentName ・見つかった数を表す出力引数 … out_FoundCount errnum_t FunctionA( char* in_ParentName, int* out_FoundCount ); 関数の引数に入力か出力かが分かるべきなので、in_ と out_ を付ける というルールを採用したとしましょう。 しかし、そのようなルールは 使い勝手がよくありません。 なぜなら、関数の引数には、入力と出力以外にも あるからです。(ただし、対象が「引数」であることに注意してください。) 使い勝手が良くない理由は、あるケースでルールをどう扱ったらいいか 示されていないことです。 多くのコーディングルールは、検証期間が 1年未満のいいかげんで副作用の多いルールなので、示されていない ケースについては、無視して構いません。 独自ルールがあればそれでよいです。 ルール警察に付き合うのは時間の無駄です。 これから示すのは、 一般的なコーディング ルールよりも長期間問題がないものですが、推奨です。 たとえば、文字列型の引数に渡した変数の値を、すべて英語の大文字に 変更する関数を作ろうとしたとします。 その引数の名前は、どうすべきでしょうか。 in_ でも out_ でも正しくありません。 in_out_ を付けるとよいでしょう。 errnum_t ChangeStringToUpperCase( char* in_out_ReplacingString ); また、構造体やクラスを引数に渡す場合、一部のメンバー変数や内部変数などが 入力変数であり、一部のメンバー変数や内部変数などが出力変数になります。 初期化関数など、入力だけ、出力だけ、というのが明らかな場合は、 in_ や out_ を付けてもいいですが、ほとんどのケースで、すべてのメンバー 変数について入力であるか出力であるかを調べることは、 あまりにコストパフォーマンスが悪すぎます。 構造体やクラスを引数に 渡す場合は、in_out_ または ref_ (reference の略語)を付けるとよいでしょう。 this ポインター相当(self)だけは例外として付けなくていいです。 errnum_t ExampleClass_transfer( ExampleClass* self, LogFileClass* ref_LogFile ); まとめると、引数のコーディングルール(推奨)は、以下のようになります。 ・入力引数 … in_* ・出力引数 … out_* ・ハンドルや構造体やクラス … self, ref_*, in_out_* ただし、* は、Pascalケース。 ■■ 注目ニュース 一覧 ■■ ◇ Windows タスクスケジューラに脆弱性。現時点で解消策なし https://japan.cnet.com/article/35124784/ http://www.itmedia.co.jp/news/articles/1809/06/news062.html https://jvndb.jvn.jp/ja/contents/2018/JVNDB-2018-006728.html https://security.srad.jp/story/18/09/07/2253247/ … メールの添付やダウンロードで、悪意のあるプログラムが高い権限で実行される。 ダブルクリック(1段目)後の、実行しますか?(2段目)の表示がないだけか。 ◇ 米国など5カ国、IT企業に暗号化データへのアクセス求める共同声明。 https://japan.cnet.com/article/35125049/ … テンキー、顔認証、指紋認証の他に、捜査用の何かを追加するだけのことなのにIT企業は論点をずらす。 ◇ iPhone売らないとヤバい。元店員が振り返る、重い販売ノルマ。 http://www.itmedia.co.jp/mobile/articles/1809/03/news042.html … Apple 製品の広い配置の規則は、衣料品のブランドから。 ◇ AMD、7nmプロセスのCPUGPU製造をGLOBALFOUNDRIESからTSMCに変更へ。 https://japan.cnet.com/article/35124817/ … GLOBALFOUNDRIES がコストに見合わない 7nm を製造しないことを受けて。 ◇ AmazonがQRコード決済に参入。アプリで使える Amazon Pay、中小店舗に照準。 http://www.itmedia.co.jp/news/articles/1808/29/news045.html … コンビニはすでにカードを通すレジがあるから中小店舗。 ◇ 中国、青少年の近視予防を名目にオンラインゲームを規制へ。 https://japan.cnet.com/article/35125040/ … 欧州のたばこ規制と同じ余計なお世話。 ◇ 丸めると円筒型、広げるとタブレット形で使える変形デバイス MagicScroll。 https://japan.cnet.com/article/35124992/ … だいぶ現実的になってきた。 ◇ IoTで会議室の利用状況をリアルタイムに可視化。空予約を防止。 http://www.itmedia.co.jp/enterprise/articles/1809/03/news081.html … ドタキャン防止と並行しないと。 ◇ マイクロソフト、GoogleアカウントでWindowsやOffice 365へのシングルサインオンを可能に。 https://www.publickey1.jp/blog/18/googlewindowsoffice_365azure_active_directory.html … Windows10やOffice365などにログインするときに、Googleメールアドレスが使える。 ■■ ソフトウェアデザイン館 Sage Plaisir 21 ■■ ホームページ >>> http://www.sage-p.com/ メルマガ >>> http://www.mag2.com/m/0000083983.html ブログ >>> http://blog.livedoor.jp/sage_p/ ツイッター >>> http://twitter.com/Ts_Neko ダウンロード >>> http://www.sage-p.com/freesoft.htm サポート掲示板 >>> http://www.sage-p.com/kg_ban09/z6037C8.cgi 東日本大震災 >>> http://www.sage-p.com/saigai.html メール >>> ts-neko◇sage-p.com ←◇を@に変えてください 緊急メールは件名に「うどんメール」を付けてください。 このメルマガの登録・解除 - http://www.mag2.com/m/0000083983.htm