アカウント名:
パスワード:
>例えば、ある設定を行う関数を作成する場合を考える。>設定値としては 1, 2, 4, 8 のみが有効で、これはサイズを示す数値とする。>>この場合、作成する関数のプロトタイプは例えば次のようになるであろう。>> int set_xxxxx_size(int size);>>ここで、引数 size には 1, 2, 4, 8 のいずれかの値を指定するものとし、戻り値は正常かエラーかを返す。
この関数は必ず処理が成功する類のものなので戻り値はvoidにして、処理は必ず成功するものであることを宣言するべきです。どうしても返すなら正常のみ。
ではユーザーが1,2,4,8以外の値をセット
「assert する」という考え方は今まであまり無かったので勉強になりました。(assert 処理の適切な枠組みが無いような状況での開発がほとんどだったので…。)
ただ、今回の話のスコープはあくまでも『引数として取り得る値が制限されているような場合に、それらが数値であっても define を用意すべきか』であって、関数仕様の方はあくまでも『例』なので、引数だけが正常/エラーを決めるとは限らず、呼出元へエラーを返す必要がある場合もあるかもしれない、と考えて頂ければと思います。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲはアレゲ以上のなにものでもなさげ -- アレゲ研究家
関数の仕様が正しくない (スコア:0)
>例えば、ある設定を行う関数を作成する場合を考える。
>設定値としては 1, 2, 4, 8 のみが有効で、これはサイズを示す数値とする。
>
>この場合、作成する関数のプロトタイプは例えば次のようになるであろう。
>
> int set_xxxxx_size(int size);
>
>ここで、引数 size には 1, 2, 4, 8 のいずれかの値を指定するものとし、戻り値は正常かエラーかを返す。
この関数は必ず処理が成功する類のものなので戻り値はvoidにして、
処理は必ず成功するものであることを宣言するべきです。
どうしても返すなら正常のみ。
ではユーザーが1,2,4,8以外の値をセット
Re:関数の仕様が正しくない (スコア:1)
「assert する」という考え方は今まであまり無かったので勉強になりました。
(assert 処理の適切な枠組みが無いような状況での開発がほとんどだったので…。)
ただ、今回の話のスコープはあくまでも『引数として取り得る値が制限されているような場合に、それらが数値であっても define を用意すべきか』であって、関数仕様の方はあくまでも『例』なので、引数だけが正常/エラーを決めるとは限らず、呼出元へエラーを返す必要がある場合もあるかもしれない、と考えて頂ければと思います。