[seasar-dotnet:2412] Re: Quill と DBFlute.NET の未来プロジェクトのスレッド

kubo [E-MAIL ADDRESS DELETED]
2015年 1月 25日 (日) 16:56:29 JST


久保(jflute)です

小谷くん、ありがとう。
C#にはない他の依存ライブラリを使わない分、
Srlを移植したらかなりこの後の移植が楽になるかと思います。

> String. => StringExtension.
> boolean. => BooleanExtension.
> .length => .length()

入れてみたー。
.length()に関しては、java.lang.String に length() があって、
そのままやっちゃうと length()() となるので、
".length(空白一つ)"に対して置換をかけてみました。

あと、final の除去も入れました。
(入れてたつもりがまだ入ってなかった)

修正版で DfAssertUtil, DfCollectionUtil を出力しました。
で、SrlクラスでDfCollectionUtilのnewHashSet()を使っていたのは間違いでした。
Srlはあまり他に依存しない形にしたいので、普通にnewする感じでお願い...。
(Java側はいま直しました)




> 1.C#では静的コンストラクタは一つしかもてないため以下のようにする必要がある
>   元クラスの各静的コンストラクタは静的メソッド化⇒静的コンストラクタ内で呼び出す
なるほど、ありがとう。
まあ、Srlはたまたま多かったけど他ではかなりレアなケースではあるはずです。
util系はちょっとこういうのが多いかもだけど。

> 2.C#では繰り返し変数にたいして"="で割り当てを行うことができない
昔のコードで「おおぅ入っちゃってる」って感じなので、他ではほとんどないはず。
(なんか、コメント入れるためだけにそうしてるって感じになっちゃってるのかもね)
Java側も直しちゃいました。ありがとう。

> 3.引数に対して"="で割り当てを行うことはできる(javaと同じ動作をするかは不明)
これは、フィルターするときに時々あるかも。
へたに変数を新しく定義してフィルターしたあげく結局元の変数を戻しちゃった、
とかを防ぐために。とはいえ、そもそもフィルターするロジックもたくさんはないかなと。
(それ以外の目的ではまず使ってない)
Srlがあることでだいぶ減っていると思うので、後で修正もしやすいだろうから、
いちどそのまま移植で試してみましょう。

> 4.C#では、あるスコープ内である変数を宣言している場合、同じ変数名をそのスコープの
>  外で使うことはできない(変数名を別にするか、どちらもスコープで区切るかする必要がある)
>  ⇒doSplitListの変数"element"など
これがもしかしたら一番きついかもね。わりとある気がする。
とはいえSrlみたいなクラスでなければそういう場面の方が少ないなので、
ちょっと移植しながらあまりに多かったら考えるという形で。

> 5.C#ではメソッド名と同じ名前の変数名は使えないので別にする必要がある
>  (関数を変数のように使える都合上そのような仕様になっていると思われます)
>  ⇒removeEmptyLineのsplitListなど
これもちょっとありそうな気がするけど、
検索で特定しやすいので splitList() に関しては直しました。


壁になるとしたら4かなぁ。。。


seasar-dotnet メーリングリストの案内