[seasar-dev:1211] Re: S2Util

Junichi Kato [E-MAIL ADDRESS DELETED]
2010年 8月 27日 (金) 08:52:58 JST


加藤(j5ik2o)です。
お疲れ様です。

面白そ~なネタなので私も横から失礼します。

2010年8月26日23:51 Wataru Yukawa <[E-MAIL ADDRESS DELETED]>:
> 湯川(wyukawa)です。
>
>
>> hogehoge(notNullArgument(arg1, "arg1"), notNullArgument(arg2, "arg2"));
>>
>> とかしたくないですよね?
>
> たしかに。^^);
>
> てか、Google Collection Libraryもぱっとみると戻り値あんま使ってない気がする。。。

自分はcommons-langのValidateのようなインターフェイスが好きですね。
http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/Validate.html

戻り値を返さないなら、commons-langのように、以下のようなインターフェイスで事足りる気がしています。
public static void notEmpty(Collection<?> collection, String message);
public static void notEmpty(Map<?, ?> map, String message);
public static void notEmpty(Object[] array, String message)
public static void notEmpty(String string, String message);

自分がやっているこのプロダクトでもそんな感じ。
http://sourceforge.jp/projects/sisioh/svn/view/altair/non-bundle/sisioh-commons/trunk/src/main/java/org/sisioh/commons/utils/Validate.java?view=markup&root=sisioh


ただ、commons-lang 3.0では、戻り値で返していますねw
http://commons.apache.org/lang/api/org/apache/commons/lang3/Validate.html

Javadocを読むと”検証済みの値を返す”としているので、検証器(Validate)としての振る舞いなんでしょう。
Assertの場合は、表明とか主張とかって意味があるので、その意味からは戻り値を返さなくてもいいかも。

このあたりは、意見が分かれるところだと思いますが、このAPIはよく使うものなので可読性を重視して戻り値を返さないに1票です。

>
>>
>> notNullArgument(arg1, "arg1");
>> notNullArgument(arg2, "arg2");
>>
>> hogehoge(arg1, arg2);
>>
>> って方がいいと思います.
>> そうすると generics もいらなくなります.
>> それからメソッド名は assert~ がよくて,
>> 自分で言っといてなんですがこの場合は
>> Argument より Parameter な気がしていて,
>> 引数の message はつまり引数の名前であって,
>> そうすると名前が前の方がいいので,
>>
>> public static void assertParameterNotNull(String name, Object argument) {
>>
>> がいいかなぁ.
>> 他に String 用に
>>
>> public static void assertParameterNotEmpty(String name, String argument) {
>>
>> とか,配列用に
>>
>> public static void assertParameterNotEmpty(String name, Object[] argument) {
>>
>> とか,同様に Collection や Map 用など
>> あるといいのかな.
>>
>>> 例外の先頭にSをつけてるのはSIllegalArgumentExceptionにあわせてのことです。
>>>
>>> ほかに必要そうな例外としてはSIllegalStateExceptionとかSIndexOutOfBoundsExceptionとか。
>>
>> できるだけ S~ ではない名前がいいですね.
>> OutOfBounds はいらないんじゃないかな.
>>
>
> 了解です。
>
> --
> name="Wataru Yukawa"
> blog="http://d.hatena.ne.jp/wyukawa/"
> email="[E-MAIL ADDRESS DELETED]"
> twitter="http://twitter.com/wyukawa"
> wassr="http://wassr.jp/user/wyukawa"
> skype="wyukawa"
> _______________________________________________
> Seasar-dev mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dev
>



-- 
/**
 * name  : Junichi Kato
 * email : [E-MAIL ADDRESS DELETED]
 *
 * blog  : http://d.hatena.ne.jp/j5ik2o/
 *
 * commiting projects :
 * http://jiemamy.org/
 * http://s2chronos.sandbox.seasar.org/
 * http://s2config.sandbox.seasar.org/
 */


Seasar-dev メーリングリストの案内