質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

12087閲覧

Javaで初期化文字列の改行 ヒアドキュメントの方法

Touhoku

総合スコア31

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/12/25 22:00

編集2016/12/25 22:01

Javaで初期化文字列の改行の仕方を教えてください。可能な限り演算子を減らし、もとの文字列に近くしたいです。

http://qiita.com/shigenobu_c/items/7c9d7df1601934987137
ヒアドキュメントという見やすい方法が他の言語では提供されているのですが、Javaだとどうにも見つかりません。

Javaの場合、皆さんはどのようにして初期化文字列を改行しますか?

いいアイディアをお持ちの方、ご回答お願い致します。

かっこ悪い例:

Java

1public final static String ctbl="CREATE TABLE Table ( " + 2" id LONG NOT NULL," + 3" filesize LONG NOT NULL, " + 4" filepath TEXT PRIMARY KEY NOT NULL,"+ 5" filehash TEXT NOT NULL,"+ 6")";

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

高尚なるJava言語にはヒアドキュメントと言うLL言語にありがちな軟弱な機能など不要!

さて、ありません。どう頑張ってありません。ですので、アイデア出しです。

  • 別ファイルにして読み込む。

ソースコード上に全ての文字列を書く必要はありません。別のファイルにして読み込めば良いのです。しかし、別のファイルにしてしまうと一部だけ変数にして書き換えができません。そういうときはテンプレートエンジンを使うと良いでしょう。とあるSOの回答ではRythmがいいよとありましたが、何でもいいかと思います。今回はSQL文ですので、単にファイルにした方が良いでしょう(むしろ、そのようなテンプレートエンジンをSQL文に対して使うべきではありません。SQL文で動的に変わる部分は常にプレースホルダーを使うべきです)。特に静的なSQL定義を外部ファイルにしておくと、DB付属のコマンドで直接作成などができるようになるので便利です。

  • ORM(オブジェクト関係マッピング)を使う。

もしあなたが「ORMは悪だ」という信念の持ち主で無ければ、ORMを使った方が良いでしょう。ORMであればSQL文を(ほとんど)書く必要が無いため、長いSQL文をどうしようか悩むことはありません。ただ、生成されるSQLについて読める知識は必要です。また、パフォーマンスを出すためにORMでは実現できない複雑なSQL文を必要とする場合は、SQL文が依然として必要になります。

  • ストアドプロシージャにして呼び出す。

ストアドプロシージャとしてDB自体に組み込んでおけば、どんなに複雑なSQL文でも命令一つで呼び出せます。プログラミング側のコードが長くなることもありません。問題は、ストアドプロシージャの機能がDBによって違う、ストアドプロシージャ自体のバージョン管理がつらいと言うところでしょうか。

  • Javaを捨てる。

GroovyでもScalaでもKotlinでもみんなヒアドキュメント(複数行文字列)があります。
**一体なぜ、いつまでも古くさい仕様のJavaで書き続ける必要があるのでしょうか?**Javaなんて捨ててしまえば良いのです。太陽は沈みました。Java7はリリースが延期されたのにも関わらず、何も変わってませんでした。待ちに待ったJava8の新機能(Streamやラムダ式)は、欠陥だらけの期待外れでした。
もう、Javaを使い続ける理由はありません。過去の遺産は他のJavaVMで動作する言語でも使用できます。新しいコードをJavaで書くこと自体が時代遅れです。

投稿2016/12/25 23:28

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Touhoku

2016/12/26 02:02

アイディアの返信ありがとうございます。詳しい説明に感動です。 その中でも特にJavaを捨てる!!!という思い切ったアイディア、素晴らしい!!!これこそ私が待っていた知見です。別言語を憶えてJVM資産を流用できるよう頑張ってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問