PowerShell -Part 7

1デフォルトの名無しさん
垢版 |
2023/11/29(水) 16:07:49.46ID:0g8RZ7sB
前スレ
PowerShell -Part 6
https://mevius.5ch.net/test/read.cgi/tech/1644744972/

次スレは>>980が立ててね!!
2025/11/26(水) 15:45:38.37ID:0sOrUy4b
PowerShell のプログラムで時々見かける

 if ( hoge ) {
  hogehoge
 }
 else {
  fugafuga
 }

みたいな
elseのところを2行に書く書き方が気持ち悪いし
PowerShell にコピペでインタプリタ的に実行させると閉じ括弧で構文が終わったと判断されて実行されちゃう
(さらに外側に括弧があれば構文として成り立つけど)
2025/11/27(木) 10:58:01.72ID:iSxBbXck
オレは気持ち悪いと思ったことない
言語特有の文法とか個人個人の書き方とか色々あるし
それで別にいいじゃんって思ってる
仕事でプログラムやスクリプト使ってる人たちは
その職場のルールもあるだろうけど
素直に従っておけばいいだけ
改良の余地があるなら進言するだけだし
2025/11/27(木) 12:30:08.06ID:Z/DnqSSi
普通じゃないし普通に気持ち悪いだろ
2025/11/27(木) 12:58:20.26ID:tq5aNNAF
ベストプラクティスにはそこまで細かい規約なかった
https://learn.microsoft.com/en-us/powershell/scripting/developer/cmdlet/strongly-encouraged-development-guidelines

C#、明示されてないがサンプルは三行
これに準じると閉じてエンターで走る
https://learn.microsoft.com/ja-jp/dotnet/csharp/fundamentals/coding-style/coding-conventions
2025/11/27(木) 15:27:32.59ID:Z/DnqSSi
普通(既存宗教):
} else {
または
}
else
{

奇形(新興宗教):
}
else {
2025/11/27(木) 15:30:06.19ID:Z/DnqSSi
>>657
C#とPSは違うだろ
PSのコーディング規約なんてあるのか知らんけど
2025/11/27(木) 15:39:55.59ID:o+yFQZuV
https://github.com/akiGAMEBOY/PowerShell_mysql-to-csv/blob/master/source/Main.ps1
これは両方の記述が混在してるな
2025/11/27(木) 16:35:40.04ID:/I+q4k2H
powershell民なら
} else
と書いておく
こうすると解釈が延長するわけでelse節が無ければ次行で
{}
と書いて終わらすこともできる
これはpowershell民に限らず行志向言語の常識的イディオム
2025/11/27(木) 16:51:14.83ID:o+yFQZuV
>>661
その理由はおかしくないか?
以下のように同様の理屈が成り立つ

}
で終わらせておく
elseで続けたい場合は
else {
で始められる
2025/11/27(木) 16:53:53.08ID:o+yFQZuV
ああ、インタープリタ的な使い方ってことか
2025/11/27(木) 16:58:55.38ID:o+yFQZuV
ならとりあえず
} else {
と書いておくほうが良い気がする
2025/11/27(木) 21:48:18.93ID:L4seW1+I
elseは使わないようにする
2025/11/27(木) 23:03:58.47ID:0ZpriLCv
5.xは三項演算子がないので他の言語よりelseを使う機会が多くなりがち
2025/11/28(金) 10:07:39.92ID:YEOTrRQk
Weekend Scripter: Best Practices for PowerShell Scripting in Shared Environment
https://devblogs.microsoft.com/scripting/weekend-scripter-best-practices-for-powershell-scripting-in-shared-environment/#use-consistent-indentation
PowerShellのコーディングスタイル
https://tech.guitarrapc.com/entry/2017/12/03/230119
2025/11/28(金) 10:46:55.41ID:XwmNjHGj
>>667
「ただし、これは、普段どちらで書いているかなどに左右されますし、チームでの共通化がとれていればいいのでしょう。

ちなみに、コミュニティでは、Stroupstrupが意外と多い結果です。」
2025/11/28(金) 11:06:29.89ID:mxO2kQAk
if 真ならelse の中いかないし
if 偽ならelse の中やりたいし
else 閉じて走るのがまずい状況がすぐに思い浮かばない
2025/11/28(金) 15:12:40.52ID:XwmNjHGj
これだけアチコチで使われてるとなると新興宗教とは言えない雰囲気
2025/11/28(金) 20:46:10.65ID:24RBB+24
なんにしろ行志向言語で中括弧を採用すること自体が悪手だったのは間違いない
2025/11/28(金) 21:20:01.11ID:8z0qQ195
>>667
Stroupstrupって構文スタイルなのか…

しかもちゃんと「式解釈では問題ありませんが、PowerShellにはった時elseでエラーがでます。」って説明まで書いてる

いや、なんでこれが多いんだよ
意味わかんねぇよ…
2025/11/28(金) 21:59:10.04ID:YEOTrRQk
https://ja.wikipedia.org/wiki/字下げスタイル

ストロヴストルップ・スタイルはビャーネ・ストロヴストルップがC++で使ったK&Rスタイルで、ストラウストラップのプログラミング入門 C++によるプログラミングの原則と実践やThe C++ Programming Languageといった彼の著書で使われている。

前述のスタイルと異なり、cuddled else (elseの前後に}と{を置くスタイル) を使わない。したがってストロヴストルップ式では次のようになる。

if (x < 0) {
puts("Negative");
negative(x);
}
else {
puts("Non-negative");
nonnegative(x);
}
2025/11/28(金) 22:18:41.05ID:HY2syTcn
誰だよスッポスッポ先生のことふざけた空耳日本語で呼ぶジャップは・・・
2025/11/28(金) 23:42:10.29ID:8z0qQ195
else の後ろに括弧置いてるじゃん…

あ、いやそういう事じゃなくて不都合が発生しうる可能性があるスタイルをわざわざ使うってPowerShellにおいてはバカでしかないと思うって話
自分が良ければそれでいいって事?
少なくともインターネッツに載せるなら可能性が考慮されてなくてダメじゃね?
676デフォルトの名無しさん
垢版 |
2025/11/29(土) 10:54:08.34ID:ABxtwAdA
ある人が書いたpowershellで動くスクリプトの書き方が
別の人がpowershellで動かしてエラーが出るのは困るよね
っていう話なの?
2025/11/29(土) 12:36:08.79ID:RVWnFQqp
スタイルだからそれぞれ拘りがあるってだけだろ
そのスタイルで統一されてれば問題ない
2025/11/29(土) 14:43:58.37ID:nY8K5zGd
良いスタイル悪いスタイルがあるのになぜか悪いスタイルが流行ってるって話だろ
そもそもスタイルが分かれるような構文を採用したのがだめなんだけどな
2025/11/29(土) 15:48:53.71ID:RVWnFQqp
おそらくC++から流れてきたんだろうと想像する
>>673にあるプログラミング入門 C++、The C++ Programming Languageが教科書になった人々
680デフォルトの名無しさん
垢版 |
2025/11/29(土) 16:28:37.98ID:m7OsZTNV
C/C++のK&R派ではあるけど
文における{}
関数定義における{}
構造体/クラス宣言における{}
namespaceにおける{}
どれも扱いが違う
成形ツール使えばなんとでもなる
PowerShellなんてどうせ描き棄てだからどうでも良い
2025/11/29(土) 16:48:02.25ID:RvNmPLXk
例えば

先輩「PowerShell でこうやって IDE で書くこともできるけど普通に貼り付けて実行も1行ずつ実行する事もできる」

新人「ホントだ!ありがとうございます!」

新人「Windows標準で使えるし家でも勉強がてらやってみよう」
新人「うーん…よく分からない。検索するかぁ」

初心者向けWebサイト「(Stroupstrupスタイルで記述)」

新人「(貼り付けて)あれ?エラーが出る…よく分からない…」

みたいな話

初心者向けWebサイトはチームとかもないし誰が見るかも無いから、Stroupstrupスタイルは適していないってこと

ブログやQiitaとかならまぁええかとは思うし、チーム内で決めて使うならいいと思う
2025/11/29(土) 17:02:38.86ID:SvUt/JNW
} をどんな構文でも常に行末としておき、if と else if を行頭に並べればブロックが対称的に見えるので美しく感じる
そんな理由があるという
けど全然共感できない
ifブロックが単に2つ続いているだけのパターンと、ifとelse ifが続いているパターンを取り違えるのは古典的なバグ
ならcuddled elseのほうがあえて相似形を崩して即座に峻別できるように喚起できるので合理的
2025/11/29(土) 18:21:27.95ID:UB7+qwb1
powershellなんて基本書き捨てだしスタイルなんて気にしたことない
vscodeのフォーマッタ任せ
2025/11/29(土) 23:17:33.20ID:2Vwa6pZU
公式ドキュメントでも
}
else {
になってるな

about_If
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_if
685デフォルトの名無しさん
垢版 |
2025/11/30(日) 14:27:29.65ID:+PAfB5o2
}
else{
でしか理解出来ないってのは池沼
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況