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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Java

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

4回答

12534閲覧

文字列変数の初期化はブランクかnullか?

soft_admin

総合スコア63

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Java

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/08/27 11:59

少し気になったのでお尋ねしたいのですが、
プログラミング言語すべて共通のことで、文字列型の変数を値がない状況で初期化したいとき、
ブランク(''あるいは"")を使用しますか?それともnull(nil)を使いますか?
あるいはどちらかが推奨などはありますか?
ご意見をお聞かせください。

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

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

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

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

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

azuapricot

2019/08/27 12:00

あとから文字列をくっつけたりするときは””にしたり戻り値としてNULLを返すときはNULLで初期化したりその時々によるきがします
退会済みユーザー

退会済みユーザー

2019/08/27 13:01

undef / undefined null / nil "" / '' : empty " " / ' ' : blank
guest

回答4

0

ベストアンサー

動的型付けの言語だと、そもそも「文字列型の変数」がなかったりするので、その場合は議論が成立しません。

静的型付けでも、別にどちらが良くてどちらが駄目という話はないので、お作法とか好みの話になってしまうと思います。どちらを使うにせよ、初期化した以上はそれに応じて適切に取り扱ってください。どちらの方が取り扱いやすいかは、ケースバイケースなのでよく考えてください。

(余談)うっかりするとこうなります

投稿2019/08/27 12:10

編集2019/08/27 12:23
hayataka2049

総合スコア30933

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

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

0

プログラミング言語すべて共通のことで

共通しません。いちばん極端な例ですが、OracleのSQLではNULLと空文字列の区別がなされません

投稿2019/08/27 12:06

maisumakun

総合スコア145183

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

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

soft_admin

2019/08/27 12:17

舌足らずですみません。 「共通のこと」というのは、「どの言語かに限った話ではない」という意味で使いました。
maisumakun

2019/08/27 12:21 編集

どの言語かに限らないと話が成立しません。NULLの意味合いも言語によってまちまちです。
maisumakun

2019/08/27 12:25

たとえばC言語の場合、「ポインタを用意してNULLを代入する」のと「配列を用意して空文字列で初期化する」のでは使い方が大きく異なってくるので、「どちらがよい」ではなく「使い方によって選ばないといけない」が結論になります。
soft_admin

2019/08/27 12:28 編集

そうなんですね。 C言語は分からないので誤りでした。
guest

0

ブランク(''あるいは"")を使用しますか?それともnull(nil)を使いますか?

目的次第でしょう。
ブランクは、参照したときに、エラーとならないですが、nullは、エラー(例外発生)になります。ただ、ブランクは、一応、文字列なので、コストが発生する。
その辺で、使い分けかと思います。

まあ、プロジェクト次第では、コーディングルールがあっても不思議では無いので、ある場合は、それに従う。

投稿2019/08/27 12:03

pepperleaf

総合スコア6383

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

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

hayataka2049

2019/08/27 12:22

>ただ、ブランクは、一応、文字列なので、コストが発生する モダンな言語だと文字列がimmutableで、特に短いものならキャッシュ(インターン)されたりするので、その場合はnullとほとんど変わらないかもしれません。
guest

0

無意味な初期化はしないのであれば、初期化する値は自明です。

代入する前に参照することがあるなら、そのときに入っていてほしい値はプログラムにより自明のはずです。

代入する前に参照することがないにもかかわらず、無意味に初期化するのであれば、どんな値でもいいです。まあ、するはずのない参照をうっかりしてしまった時のために、参照時に例外が発生する値があればそれがいいかと思います。

初期化が不要な場合にもint i;書くのでなく、反射的にint i=0;と書かずにいられない病に罹っているなら、直したほうがいいです。読む人に優しくないからです。
まあ、今は最初の代入時点で宣言できる言語が多いと思うので、そういう言語ではこういうケースはないかと思いますが。

投稿2019/08/27 12:49

otn

総合スコア84499

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問