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

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

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

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

JavaScript

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

Q&A

解決済

2回答

585閲覧

ifやforの無い、ただのブロックの使用について

reimer0204

総合スコア27

Java

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

JavaScript

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

1グッド

0クリップ

投稿2022/09/30 01:23

編集2022/09/30 03:42

追記

teratailは困っている人の質問を解決するサービスです。そのため、漠然とした興味から票を募るような質問や、意見の主張をすることを目的とした投稿は推奨していません。

コメントにて上記項目に該当するのでは、というご指摘を受けましたので本質問はクローズさせていただきました。
大変失礼いたしました。

質問

下記はJSの例ですが、多くの他言語でも出来る下記のような if や for なども使わずにただブロックだけを単体で使うコードの是非を皆さんにお伺いしたいです。

js

1// 何かしらの処理A 2{ 3 // 何かしらの処理A-1 4 // 何かしらの処理A-2 5} 6 7// 何かしらの処理B 8{ 9 // 何かしらの処理B-1 10 // 何かしらの処理B-2 11}

補足情報

そもそも1関数自体小さくするべきという話はありますが、なんだかんだどうしてもバッチ的な処理だったり泥臭い処理などで長くなるケースはあると思うので、その前提で…

これは他の人のコードで初めて見て、正直今までこういった書き方は見たことがなかったので第一印象は「気持ち悪い!」だったのですが、変数のスコープは狭いに越したことはないし、2~30行のコードにコメントをつけた時にこの方が範囲が分かりやすいので合理的なのか…?というような気もします。

個人的には別にデメリットもないし「見慣れない」というだけの理由で避けるのは違う気もするのですが、コーディング規約でこれに触れられているのも見たことはないですし、タブ/スペース論争などのような議論も見つからず、皆さんの意見を聞きたく質問させていただきました。
※既存の質問も探したのですがどうしてもブロック崩しの話ばかりヒットしてしまい…既にありましたらすみません。

think49👍を押しています

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

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

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

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

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

fana

2022/09/30 02:06

> teratailは困っている人の質問を解決するサービスです。そのため、漠然とした興味から票を募るような質問や、意見の主張をすることを目的とした投稿は推奨していません。 (ヘルプより抜粋) …ということになっており,残念ながら本件のような方向の話は場所的に取り扱い範囲外…ということになるものと見えます. なので(?)あえてteratailでやるのであれば,例えばもうちょっと無知を装って, 「あるコードに ifとかfor でもない箇所に{}が書かれていてこれが何なのか意味が分からない.これは何なの? 試しに取っ払ってみたら,結果の振る舞いが場所次第で異なるようだ.何も影響が無いように見える箇所もあれば,エラーになってしまう箇所もある」 みたいな話から出発するような工夫が必要でしょう. ↓ で,それに対して「変数のスコープが」みたいな回答が来たら,そこにぶらさげる形で「なるほど,しかしこういう書き方って自分はあまり見たことないんだけど一般的なの?」とか言ってみれば目的の話ができる,と.
shiketa

2022/09/30 02:09

ありなんじゃないですか。ただし`{hogege()}`と書いてもそこは単なる関数定義であり、実行されるわけではない言語もあることを知っておいて損はないとおもいます。
reimer0204

2022/09/30 03:35

> teratailは困っている人の質問を解決するサービスです。そのため、漠然とした興味から票を募るような質問や、意見の主張をすることを目的とした投稿は推奨していません。 大変失礼いたしました。ご指摘ありがとうございます。 本質問については早急にクローズさせていただきます。
fana

2022/09/30 04:05

> 早急にクローズ という方向に向かわせる意図は無かったのだけど… 個人的にはわりと普通な書き方です.
guest

回答2

0

ベストアンサー

運用の問題なのでたいした話ではないですが定数が再定義できちゃったりしますが大丈夫ですか?

javascript

1const a=1; 2{ 3 const a=2; 4} 5console.log(a); // 1

投稿2022/09/30 03:31

yambejp

総合スコア114833

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

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

reimer0204

2022/09/30 03:39

ご回答ありがとうございます。 ifやforなどを使用した際のブロックでも同様なので特に問題ではないかと思っていますが、やはり見慣れないからか何となく不思議な感じがするのはあると思います。 ご意見ありがとうございます。助かります。
guest

0

コーディング規約でこれに触れられているのも見たことはない

その程度のことだということで良いのではないでしょうか。

投稿2022/09/30 02:09

jimbe

総合スコア12646

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

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

reimer0204

2022/09/30 03:36

ご回答ありがとうございます。 jimbeさんとしては特に使われていても違和感はないし、些細な問題であるという認識ということですね。 大変助かります。ありがとうございます。
jimbe

2022/09/30 09:16

少しご質問の意味合いと違うかもしれませんが、 switch の case 内でローカル変数を使う時などに使うこともありました。 switch(a) { case 1: { int temp = f(); 何か処理 } break; case 2: ~
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問