- - PR -
"ABCDE"=toUpperCase、"Abcde"=???
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-02-08 00:54
自分も未記入さんと同意見です。条件が許すならば既にあるものを使ったほうが生産性はあがりますよ。もちろん、勉強のためにソースコードを見てみたり(オープンソースはそれが利点ですね)自分で試しに実装してみたりすれば、本当に必要なものを作るスキルがつくので長い目で見たときの生産性はあがります。
##以前、標準APIにあるようなユーティリティまで自作していてそこがバグの原因になっているようなプロジェクトを見たことがありますので。 | ||||||||||||
|
投稿日時: 2005-02-08 02:41
今回の場合は
ですから、Jakarta Commons-Lang StringUtils#capitalize() は少し要件とは 異なる気がします(前準備で java.lang.String#toLowerCase() を用いれば済み そうですが) さたろうさんのサンプルに文字数チェックを加えれば StringUtils#capitalize() と同等か、より目的に適した物になるんではないでしょう。 「車輪の再発明」という言葉と「生産性」という言葉が出てきましたが、私としては 外部ライブラリを単発の問題解決のために用いるのは、かなり疑問だったりします。 「事前の検証なくして外部ライブラリを用いるのは危険だ」と思うからです。 (もちろんそれも含めての「条件」という前提だとは理解してますが) その検証コストと外部ライブラリの検索、ビルド・組み込みのコスト(安全を考えれ ば、ビルド済みを導入するというのは避けるべき)全てを合わせると本当に生産性が 上がるのはプロジェクト全体を通して共用化するなどの場合に限られるのではないで しょうかね? オープンソースだJakartaだ、といっても「バグ」と無縁なわけじゃないですし、 「国際化がおざなり」だなんてデフォルトみたいなモンですしねw | ||||||||||||
|
投稿日時: 2005-02-08 09:09
StringUtils で解決できるような、基礎的な小さな問題の多くは、同時に発生するのではなく単発の問題が繰り返し発生します。 「StringUtils にあるけど、十数行で書けるから これは自分で書いてしまおう…。」 「StringUtils にあるけど、十数行で書けるから これも自分で書いてしまおう…。」 「StringUtils にあるけど、十数行で書けるから それも自分で書いてしまおう…。」 で、(他者に十分評価されていない)独自ライブラリが出来上がっていくと。
たしかにバグがないとは言えないけど、自分で組んだものよりは多くの人に評価されている可能性が高いですね。実際、ここで提示された例にも穴があったわけで。 コストの話もどうなんでしょうね。小さいものなら他人の作ったものを検証するよりも自分で作ってしまったほうが早い というのは典型的なアレのような気がしますが。 | ||||||||||||
|
投稿日時: 2005-02-08 14:59
ですから「本当に生産性が 上がるのはプロジェクト全体を通して共用化するなどの場合に 限られるのではないか」と申しております。 そもそもStringUtilsはstaticメソッドの固まりで「これは、これも、それも」といったケース を前提とした「単発の繰返し」を想定して作られています。 そして、わたしはそのようなライブラリの存在自体を否定しようとは思ってはおりません。 けれど、プログラミング(コーディング)の段で「あー、こりゃ便利だな」といって個人で外部 ライブラリを導入するのはどうか、という事が言いたかっただけです。 比較的容易に実装できる「単なる1処理」の為だけに、外部ライブラリの検証(コードの検証 だけではなく、ライセンス条項など調べるところは多い)を使用ライブラリの数だけこなす程 のコスト的見返りがあるのか、よく吟味せねばならないと思います。 作っているものが個人の趣味の範囲であるなら構わないと思いますが、設計の段で導入検討 がなされなかった外部ライブラリを個人で用いるというのは、コスト的に厳しいと思います。
さたろうさんは「参考までに」と断りを入れてからサンプルを示しているわけで、それを 「穴」というのもどうかと思います。 こういった掲示板で求められるのは方法論であって、決して完成品ではないわけですから。 それこそ「穴」の無い完品を回答者に要求されるのでしたら、コストに見合いませんw
アレ何を指しているのか解かりませんが、誉め言葉でないことだけは理解できました。 | ||||||||||||
|
投稿日時: 2005-02-08 15:56
もともとの主旨とはかけ離れてきているので続きをやりたければほかの会議室でスレッドおこしたほうがよさそうですね。
これについてはそのとおりだと思います。 言葉足らずでした。申し訳ありません。 | ||||||||||||
|
投稿日時: 2005-02-08 16:30
まずは「お詫び」。最初の問題「ABCDE」を「Abcde」に変換するには StringUtils.capitalize() ではなくて WordUtils.capitalizeFully() が適切でしたね。
あとで気づいたのですが StringUtils のドキュメントを読めば書いてあることだったのでとくに訂正しなくてもいいかと思っていました。 そして前回「一言補足」で書いたことの解説を。 Unicode には toUpperCase() と toTitleCase() の結果が違う文字があるんです。 そういう文字が含まれている場合に toUpperCase() で安易に実装した場合は、「正しい変換」をしないことになります。 もちろん Commons-Lang では考慮されてコーディングされています。 例: 「Lj」http://www.fileformat.info/info/unicode/char/01c8/index.htm それぞれ UpperCase, LowerCase, TitileCase でどのように変化するか、ご覧ください。 みなさんご存じでした ? 私も今回の件でこのような文字があることを知りました。 そして「この程度なら「車輪の再発明」でもいいだろう」派のみなさん、毎回ここまで考慮してコーディングできますか ? 私には無理なので素直に Commons を使うことにしています。Jakarta の産物はほかにも使ってますから、今さらライセンスがどうこうは問題になってないですね。 ところで「未記入」さん、そろそろ名前を入れていただけません ? ほかにも「発言数違いの未記入さん」がいろいろおられて、区別が難しいのですが...。 | ||||||||||||
|
投稿日時: 2005-02-08 18:16
区別しなくていいんじゃないですか? どーせ素性も知らぬ間柄ですし。発言者が誰かというのはさほど重要とは思いません。発言の内容だけ見ていただければ十分と思います。 | ||||||||||||
|
投稿日時: 2005-02-08 18:57
永井%この程度なら「車輪の再発明」でもいいだろうです。
「正しいこと」ではなく、「仕様(テストケース)を満足すること」を目標にコーディングしますし、またしてもらっていますので、その細かい挙動は個人的にはどうでもいいです。 #知識としては面白いと思いますが |