SASプログラミング ベストプラクティス25
Kirk Lafler Shares 25 Coding Techniques! ~ 25 Best Practice Coding Techniques for SAS Users
こちらの記事(前回挙げたリンクのひとつ)を、リーダブルコードに倣って先輩からのアドバイス口調で抄訳しました。
※は私が追加したメモです。
- プログラムを実行したらすぐにログを確認しよう。ログを抑止するオプションは使用しないようにしよう。
- source2オプションを使おう。(%includeしたソースがログ出力される)※参考:Suppressing Information to the SAS Log
- PROC SQLやPROC REPORTといったプロシージャのコードをシンプルに出来ないか考えてみよう。(使用するプロシージャの数を減らせばI/Oが減り、実行速度の向上に繋がる)
- DATAステップとプロシージャで同じことができるなら、プロシージャを使おう。
- ユーザ定義フォーマットライブラリは1ヶ所にまとめよう。
- RUNステートメントをDATAステップ、PROCごとに書こう。
- コメントを書こう。(※「なにWhat」をしているかではなく、「なぜWhy」しているかを書こう)
- 何を指しているのかが分かる、意味を詰め込んだ変数名を使おう。
- すべてのプログラムファイルのヘッダーにドキュメントを書こう。(※『リーダブルコード』的にはそれはプログラムには書かず、subversionやgitなどのバージョン管理システムでやりたい。)
- 複雑なコードを、小さく管理しやすく単純化しよう。読みやすさはメンテナンスのしやすさ。
- データセットの名前を明確につけよう。
- マクロを活用し、冗長なコードを避けよう。
- よく使う処理のマクロのライブラリを1ヶ所にまとめて作ろう。
- ずっと使うパーマネントライブラリを作ろう。そこには、プログラムやログと一緒に、日、月、四半期、年ごとに実行するときの情報も入れておこう。
- ユーザのインプットに基づいて、冗長で複雑で面倒なタスクを簡素化する、ビューを作ろう。(※SQLのVIEW?)
- 未知のデータを処理するコードを書こう。null値などが分岐を通り抜けるのを防げる。
- informat、format、labelはそれを使うデータセットと一緒に保存しておこう。
- 不適当なデータやプログラムを終了させるようなデータを処理する分岐を書こう。
- プログラムは完璧なデータでテストしよう。
- DATAステップにOBS=0を設定して、データを処理してしまうリスクを負わずにプログラムのテストをしよう。
- PROC SQLではVALIDATEを使おう。
- 上書きの悲劇を防ぐために、NOREPLACEオプションを使おう。
- 大きなデータを集計するプロシージャの恩恵を活かすために、結果はデータセットに保存して、再び同じ処理をするのを避けよう。
- よく使うオプションはSASのconfigファイルに追加しよう。(※SAS Configuration Files)
- よく使うステートメントはautoexec.sasファイルに追加しよう。(※SAS Autoexec File)
他のもぼちぼちまとめたいなー(願望)