「enum」を含む日記 RSS

はてなキーワード: enumとは

2021-10-07

typescriptenum

日本で(?)やたら批判されてるけどaws-sdkも使ってるんだよね

代替案もeslint無視した微妙なのばっかだしなんなんだろう

自分が頭悪いのかなんなのか

2021-08-25

anond:20210825205300

おう!外部キー制約を語るとは、RDB勉強しているのだな?いい心がけだ。増田は外部キー制約があると「どんなメリットがあるか知りたい」のだな?良し、答えてやろう!外部キー制約があると「変なデータが入らない」ということが開発者が『保証』できるのだ。うん、それで?って増田は思うだろう。それで、実例を挙げるけど、sex というカラムを create で作ったときに、そこに insert into で入る値が「男」「女」「その他」というデータに限りたいとき設計者にあったとする。そうすると、「 insert するのは『チンポ』でしょ?」みたいなアホを防げるだろ?もちろん、limit みたいな副クエリ実装しても構わない場合もある。型を指定して、boolean にしたい場合もある。だが、「入るのはこれだけだと思うが、後に追加で変更できる」としたら、嬉しい場合があるのじゃ。まぁ、究極的に OOP関数型言語、または(古い)命令形言語だと、enum みたいなものなんだよ。いや、だとしたら、enum でよくね?って思うのなら、リプライくれ。答えるから

2021-07-14

anond:20210714091139

よく分からん

要は、Enumソース内で書くか

JSON で外に保持するかのどちらかって

話でいいのか?

2020-09-27

anond:20200927035510

言語によると思う

javaなら普通にオブジェクトEnum継承したインスタンスになるからその分メモリ使うし、enum内部で結局String持ってる(コンパイラStringEnumの子クラスコンストラクタに渡す)からStringの方がリソース無駄にならない

インスタンス単一にする意味はあるから結局enumの方が好ましいだろうけど)

Cとかは実質intだからStringにするのは無駄だろうな

anond:20200927003907

enumをただの単一インスタンス確約されたキーオジェクトしか使ってないの見ると悲しくなるよね

そんな用途しか使わないならstaticで宣言したStringでいいじゃねぇかってなる

ストラテジーパターン的にinterface貼って使うならenumも便利だなと思うけど

anond:20200926123203

そこらにいる Webアプリ系のエンジニアなんて抽象化できない奴多すぎるからイキれるんだぞw

enum ゴリ押しのアホばっか。で、こんなんでドヤ顔で登壇してる奴もおるからさら蔓延るという悪循環w

2020-06-06

anond:20200606140035

三つ持ってるならintでもboolでもなくenumにする

2020-04-09

ねぇXちゃんさぁ。なんでこんな動的なオブジェクトをstaticにしてんの?

これさぁ、そこそこ重いけどさ、セッションごとに生成される一時的インスタンスで持ってるだけでも十分パフォーマンス的に問題ないよね?

なんでプロセス間でわざわざ共有してんの?

これってネットワーク接続管理してるオブジェクトだよね?

ネットワークリソースつったって利用者たかだか数百人でしょ?

その中でリソースを同時利用するってゆってもたかだか十数人でしょ?

プロセス内でこのオブジェクトを全共有することでリソースの削減なんてたかが知れてるよね?

それをわざわざプロセス内でこのオブジェクトを全共有ってマジ管理できるの?シンクロナイズドとか書いてっけどさぁ?削減できるリソースの量に比べて超危険すぎねぇ?

コミットログ見たけど、ぜんぜん性能問題とかと関係のない問題修正だったみたいだけど、なんでこんな危険コードになったわけ?

Xちゃんさ、そもそもコードが品雑なんだけど、これエンプラJava案件なのよ

なんでCの組み込みコードみたいにif文の鬼ネストとか、引数に空のList渡して破壊的に値を設定するような、読みづらいコード書いてるわけ?

Listくらい普通に返り値で返しなさいよ…

状態管理もif文の鬼ネストやめて専用クラスとかEnum使ってコマンドパターン対処しなさいよ

もしかして、Xちゃんオブジェクト指向にピンときていないのかな?

ちゃんはどっちかってーっとPHPパーなので、ゴリゴリオブジェクト指向はそりゃ専門じゃないよ

それでもさ、interfaceとか使って、各処理の実装を切り分けるとか、やりようはいくらでもあるじゃん

あと不要なnullチェックも多すぎです。コンストラクタ初期化保証されているfinalフィールド値がnullかどうかなんて確認しないでください

ユーザー入力DB入力環境リソースとか、外部の情報起源じゃない変数がnullとか、明らかなバグなんだから暗黙的なぬるぽクラッシュさせましょう

こんなバグが出荷に乗ることなんてありえません。わざわざ専用のエラー処理で専用の例外飛ばすとか無意味です。

いちいちなんか冗長で複雑なんですよねぇ。

ちゃんみたいな若造が、ベテランのXちゃんにこんなこといいたくないけどさ、

Xちゃんコード。どこか昭和匂いがするんだよねぇ。悪い意味で。

Xちゃん名誉のために言っておくと多分Cプログラミングうまいんじゃないかな?

そんなソース読んだこと無いから知らんけど

2018-08-14

anond:20180814163400

Enumにわけわからん値待たせてる。その値なんすか。意味わかんないんですけど。

からないことはちゃんと聞いて確認しないとダメでは?

ソースダサい

センスがないんだよね。

たぶん本人はかっこいいと思ってる。

name4User

とか。だっさ。

Enumにわけわからん値待たせてる。その値なんすか。意味わかんないんですけど。

言わずもがな本人も鬼ダサい

2018-08-10

anond:20180810151853

から、三値論理計算量だったりデータ量を落とすために利用するのにtrue/false/nullをDBに入れるのはアフォだろうと。そういうカラムはtinyintでやれ。enumでもええけど。

2017-10-21

何でもかんでも揃えようとしないでほしい

プログラマなんだけど、なんでも揃えようとしてる人がうざい

よくあるのが、JSON とかオブジェクト系の記述するところで、 「:」とか「=>」みたいなのの位置

揃えられると一見すると見やすいが、金額みたいに揃ったみやすさが必要ないところでされると面倒

10行並んでたら1つ変えたのが原因で10行とも変えないといけなかったりする

面倒だけどツール使えば揃えること自体は楽にできるからこれはまぁいい

だが、バージョン管理ソフトでの変更行数が無駄に増えるのでパット見たとき結構大きな変更してるように見えたりするからちょっとイヤ

さらgrep かけようにも空白数が不定だから正規表現にしないといけない

正規表現書くの面倒だしそもそも遅い

大規模プロジェクトだと待ち時間が大きく変わってくる

んだけど、まあここまでは別にいい

他でも十分ある宗派の違いだし、まだ理解できる

この揃えるとき

aaa      : {
    bbbb : 100
    ccccc: 200
},
dddd     : {
    e:   : 300
}

みたいに(フォントによっては揃ってなく見えるかも)、ネストが違うのに全部を揃えようとするの、ホントやめろ

わかりづらい

上の例みたいなシンプルだと困らないが複雑な構造になってるとかなり見づらい

せめて揃えるのは連続する行で同じ階層のものだけにしてほしい

上でいう aaa と dddd の行が10行程度離れていたら、ここを揃えても全くきれいに見えないし無駄

bbbb と ccccc みたいなときだけならまあ許せる



仏の顔も三度まで、

ここからは許せないレベルもの


(1) 文字数を合わせようとする

上で書いたみたいなのは文字数が違うから合わせるためにスペースを入れる必要がでる

しか文字数が揃ってたらそんな必要はなく見た目も綺麗だ

きれいなのはわかる、だが無理やり合わせようと単語を探し始めるとかありえない

5つ項目があって、4つが6文字単語で残りの1つが4文字だったとする

6文字にしたいからそれっぽい意味単語いか探そうとしてる

無駄な上に、本来のそれに適した単語じゃないのを無理やり使うのでわかりづらい

理解できない自己満足しか思えない

揃ってることはパット見綺麗でもプログラムみたいのだと、単語まで似てると気づかないミスが出て来る

beer と bear、 form と from、 fall と fail みたいな見た目が似てる単語と、見た目が全く違う単語比較ではミスの数が明らかに変わると思う

なのに、 enum みたいな選ぶタイプのもので、数文字違うだけの似た見た目の単語を探してきて選ぶとか、ミスを誘発しようとしてるのかと言いたい



(2) 単語の語尾とか

(1)のように大半が揃ってると残りも無理やりそうしたいということで、単語勝手に変化させたものがある

例えばだが、語尾が1つを除き全部 -ly になってたとする

そうすると残り一つに無理やり ly をつける

なんなの?イン踏みたいの?ラッパーなの??

経緯を知らない人が見たら意味不明単語である

そもそも名前みたいな固有名詞にすらそんなことしてるから意味不明にもほどがある



(3) 変化形無視

上の時点で英語を完全無視英語力のなさはわかっただろうが、さらにこういうのもある

過去形には ed複数形には s のようなルールには単語によっては特殊な形をするものがあるのはもちろん知ってると思う

それを完全無視変数名を定義するから見ててすごく気持ち悪い

プレフィックスis つけるみたいな単語の組み合わせ部分なら気にしないけど単語としておかしいから、自分で書くとき本来の形で書くとエラーでるからさらイライラする

例えばこういうこと

readed, catched, taked, companys, boxs, mans, childs, fishs, classs

見てるとムズムズする

英語得意でない自分ですら違和感を感じるのに、これに何も感じないとか英語力ひどすぎると思う

まあエラーメッセージdon't have ~ とすべきところを has not ~ とか書いてたくらいだからなぁ

これが部下とか下の立場の人なら 「使う前にググってみて。おかしかったら『もしかして、~~』みたいの出るから」と言って直させるけど、上だからどうしようもない

間違ってますよー、と遠回しに言ってみたことはあるものの、直す気は全くないようだし、それどころか無邪気に揃えてやったぜみたいなこと言ってドヤ顔してるからホントどうしようもない

2016-11-09

switch文が許されるのはenumを処理するときだけ

しかenumを使う場面というのは、

外部と通信するためのパラメータの一部だったりするが、

内部の都合で値が自動生成されるenumの仕組みはその外部の仕様と合わせるのに実に相性が悪い。

よってenumは使い物にならないし、swtichを使う場面もない。

レガシー文法である

2016-11-05

PHP7で堅牢コードを書くとかいう風潮

いやまあ、これ読んだんすよ。

でさ、もうね、こいつ馬鹿なん?w ってゆう。

 

PHP7で堅牢コードを書く - 例外処理、表明プログラミング契約による設計 / PHP Conference 2016 // Speaker Deck
https://speakerdeck.com/twada/php-conference-2016

 

PHPみたいなレガシーゴミ言語にしがみついて、

必死に型とかEnumとか再発明って・・・

草すぎてコーラが無くなってしまうんだw

 

せめてさあ、Javaでも使えば?

いやっつーかホントPHPでここまで涙ぐましい努力しても、

劣化Javaしかないのが悲しいよね。

 

ペチプァっ~って馬鹿しかおらんのか?

こういうゴミ屑が勘違いして、

とか喧伝して糞案件量産してると思うと、反吐が出るね。

PHPと一緒にさっさと死んでほしい。

おまえもそう思うよな?

 

草プァ~~~w

2016-07-25

gitにおけるコミットログ/メッセージ例文集100

私はコミットログの書き方に悩む英語の苦手な人間である。実際、似たような人は世の中に結構いるようで、頻出単語を集計したりまとめたものは既にあって役に立つのだけれど、これらはあくま単語の話であり、具体的な文を構成する過程でやっぱり困る部分がかなりあった。

要するに、どういう時にどういう文が使われているのか、ということを示した例文集が欲しいのであるググると他にも「例文集があればいいのに」みたいな声はあるくせして、しかし誰も作ろうとしない。何なんだお前ら。それじゃ私が楽できないじゃないか

仕方なく自分でまとめたので、増田に垂れ流しておく。

はじめに

ここで挙げているコミットログは全て実際のコミットログから転載である。当然ながら各コミットログ著作権はそれぞれの書き手にある。いずれも各英文でググれば出てくるし、フェアユース範囲なら許してくれるだろうと考え名前プロジェクト名は割愛したが、ここにお詫びと感謝を述べておきたい。

抽出条件だが、参考にできそうなコミットログを多く含んでいそうなリポジトリGitHubSTARの多い方からざっと目で見て適当に選び、それぞれ最新コミットから5000件抽出した(あわせて前処理として、コミットログ冒頭のタグ情報は消去した)。

結果として対象としたリポジトリは以下の通り。

atomのみ5400件抽出していたため、計25400件のコミットログベースである。このうち、以下の条件に合致するものは参考例にすべきでないとして一律排除した。

こうして残った8540件を眺めながら、適当に切り出したのがこの用例集である個人的に「うーんこの」と思った表現も、散見される場合は載せた。

ということで、以下用例を羅列していく。

用例集

オプションフラグメニューを追加した
ファイルを追加した
メソッド機能を追加した
実装を別のものへ切り替えた
  • Use args.resourcePath instead of args.devResourcePath
  • Use arrays instead of while loops
  • Use auto instead of repeating explicit class names
  • Use weak pointer instead of manual bookkeeping
  • Change all uses of 'CInt' to 'Int32' in the SDK overlay
  • Change Integer#year to return a Fixnum instead of a Float to improve consistency
新しく何かに対応した/機能上の制約を取り払った
何かを使うようにした
より好ましい実装に改良した
何かを出来ない/しないようにした
  • Don't bail reading a metadata instance if swift_isaMask isn't available
  • Don't exit until the parent asks for an instance
  • Don't include Parent pointer in Nominal/BoundGeneric TypeRef uniquing
  • Don't use MatchesExtension for matching filters
  • Don't use ES6 class for AutoUpdater windows class
  • Don't use MatchesExtension for matching filters
  • Avoid `distinct` if a subquery has already materialized
  • Avoid infinite recursion when bad values are passed to tz aware fields
オブジェクトの内容や挙動確認やすくした
Assertを追加した
不要コードを除去した
コードを移動した
名前修正した
さなバグタイポ修正した, 警告を潰した
バグや好ましくない挙動修正した
テストコメントドキュメントを追加した
テストを削除した
テストコメント修正した
ドキュメント修正した

表現傾向とまとめ

以上の用例をふまえ、今回の参考ログ8540件から先頭の単語を出現回数で並べると次のようになった。

Add1149
Fix1014
Update584
Remove566
Use382
Don't260
Make228
Move178
Change103
Rename85
Improve76
Avoid68
Allow65
Implement60
Handle58

コミットログの基本形はもちろん動詞 + 名詞である名詞固有名詞複数形、不可算名詞が多いが、単数形場合冠詞は a が使われるか、あるいは省略される。the はまず使われない。

何かを追加した、という表現では非常に広く Add が使われる。メソッドからテストドキュメントに至るまで大概これでまかなえる。

一方、何かを修正した、という表現では広く Fix が使われる。「何か」は typocrash といった単語からメソッド名まで幅広い名詞を取るが、動名詞はあまり取らないのと、that節は取らないのでその点は注意が必要である

Fix は「何かが正しく動くようにした」ことを示し、正しい動作内容が何かを説明しない。そこで正しい動作内容に言及したい場合Make sure が使われる(こちらはthat節が取れる)。ただし Fix よりもニュアンス的に重い表現と思われ、Fix を使わず Make sure ばかり使うのはちょっとキモいのではないかと思う(Ensure はさらに重い表現っぽい)。

また、Fixtypo 以外でのドキュメント修正に対して使われることは稀である。対して Update はドキュメントコメントテストに使われ、本体コード修正に対しては使われない。本体コード修正にあわせてテスト更新したなら Update が使われる。ただ、テスト機構それ自体バグ修正したなら Fix である

無駄な何かを単純に除去したなら Remove を使う。これまでのもの(A)からのもの(B)に切り替えたのであれば Use B instead of A か Change A to B が使われる。新たに何かを利用するようにしたのであれば Use を、利用を取りやめた場合Don't use を使うことが多い。

何かをしないようにしたなら Don't を、内部実装効率化なら Make A + 比較級/形容詞Improve が使われる。

中身の変更を伴わない単なる名前の変更なら Rename A to B、コード機能論理上の場所を移動させたなら Move A to B である

この辺はリファクタリングと呼ばれる行為と思うが、Refactor というぼんやりした動詞はあまり使われず、このように変更内容の種類に応じて動詞が使い分けられている。

余談

コミットログにはWhyを書くべきだ、というのを何かで見かけたので because とか since を使ったログがどの程度あるかを調べたが、8540件のうち22件だった。基本的に短く、シンプルに、一目で意味が取れるログが好まれる傾向がある。例えば get rid of とか2件しか使われておらず、圧倒的に remove である

一方で、シンプル単語だけど開始単語としては使われないものもある。例えば次のような単語である。Expand(9)、Extend(8)、Print(5)、Optimize(5)、Publish(4)、Append(4)、Modify(3)、Manage(2)、Revise(2)、Dump(2)、Insert(2)、Migrate(2)、Enhance(1)、Edit(1) 。いずれもカッコ内は8540件に対する冒頭での登場回数である。結局、より一般的平易な単語で表せたり、Refactor同様に抽象度が高すぎると使われないのだろう。

おわりに

8000件もログを見たおかげで、迷いなくコミットメッセージが思いつくようになったのが個人的には今回書いてて最大の収穫だった。たぶんカンニングペーパーを作る行為それ自体効率のいい学習になるという話と同じだと思う。

このまとめも100以上用例を転載してあるので、それを読むだけでも多少は効果があるんじゃないかと思う。同じようにコミットログ書きたくねぇなぁ英語わっかんねぇなぁと思っている人にとって、何か役に立つところがあれば幸いである。

2015-09-20

Windowsシステムディスク入れ替えで躓いた件の備忘録

ちょっとした事情からシステムディスク移設をしたところかなり躓いたので、備忘録的にメモ

時代に逆行して個人的な書き物をする場所を一切持ってないのでお借りします。

以下、Linuxなりの最低限の知識があり、バイトオーダーもわかり、細かいところは勝手に補間できる人向け。

目的

Windows 7システムディスクの入れ替え。

オフセット32256バイトを1048576バイトに調整する。

得てして非AFTからAFTという状況と思われる。

コピー元が壊れかけの時はやらないほうが吉。

手順には省略するがたぶんやらないといけないこと


手順

  1. c:\boot\BCDバックアップ(BCD.org等)
  2. clonezillaとLinux Live USB CreatorをDL
  3. clonezillaのUSB起動ディスク作成(「作成したファイルを隠す」、「LinuxLiveWindows上で起動可能にする」のチェックは外す)
  4. HDD接続し、NTFSフォーマット
  5. msinfo32.exeを実行し、オフセットが1048576になっていることを確認
  6. clonezillaのローカルパーティション→ローカルパーティションでクローニング、オプションは全部デフォルト
  7. HDDのみ接続し(念のためclonezillaのUSBも外す)、Windowsインストールディスクを起動
  8. 最初の画面で「次へ」を選択したらShift+F10でコマンドプロンプトを起動
  9. diskpartを起動、list disk → select disk n → list part → select part n → active し、exit
  10. bootrec /fixboot, bootrec /fixmbrを実行
  11. bcdedit /enum allを実行、随所でdeviceがunknownになっているはず
  12. bcdedit /set {bootmgr} device "partition=C:"等をunknownになっているぶんだけ行う。osdeviceやfiledeviceも。
  13. ほかはツールになにも弄られないようにしてシャットダウン
  14. この状態で起動しようと思ってもカーソル点滅から進まない。ここから先の情報(というか23.)は少なくとも日本語では見当たらなかった。
  15. clonezillaを再度起動
  16. lsblkで/lib/live/mount/mediumとなっているデバイスを調べる(仮に/dev/sdb1。ついでに新HDDシステムパーティションは/dev/sda1と仮定。)
  17. sudo mount -o remount,rw /dev/sdb1を実行(自信があれば/tmpとか使ってもいい。オススメしないけど。)
  18. /lib/live/mount/mediumに移動
  19. sudo dd if=/dev/sda1 of=./pbr.bin bs=512 count=1を実行(/dev/sdaだとMBRになってしまうので注意)
  20. pbr.binのバックアップを取る
  21. sudo vi -b pbr.binを実行
  22. :%!xxd でバイナリ編集できるようにする
  23. 1Cが"3F00"になっているはず。これがhidden sectorsすなわちオフセット。ここを"0008"に書き換える
  24. :%!xxd -rで元にもどし、:wqで保存終了
  25. sudo dd if=./pbr.bin of=/dev/sda1 bs=512 count=1を実行し書き戻し(/dev/sdaだと略)
  26. 祝起動

23.もそうだけど12.もどこにもなかった。(英語は面倒でしっかり読んでない)

2点でめっちゃ躓いたってお話

2014-06-04

http://anond.hatelabo.jp/20140604161616

途中で編集してトラバ先を変えた?まあいいけど

否定派は三つならenumにするんじゃなかったんすか?

3つだからenumってことはなく、2つでenum、定数値だって問題ないよ。

bool?だって「true,false,null許容」が最適なら使われるべきだよ。

ただstate A,B,Cの3つを表現するのに、bool?が3値とれるからって理由で

trueはA, falseはB, nullならCみたいに本来の意味を変えて使うのはいかんな。

個人で書くコードならなんでもいいけど。

http://anond.hatelabo.jp/20140604161945

うーん、いまいちbool?否定派の意見わからん

「外部結合するフラグ値」をC#表現したいとき、どうして、enumを使わないといけないんだ?(true,false,nullしか入らないんだぜ)

bool?の方がお手軽で楽チンじゃん、定義を見れば一目で分かるし。

それをユーザー定義定義解釈するかどうかは、プログラム側の問題であって、3つ以上増えない「外部結合のフタグ値」を、bool?で定義した方が分かりやすいだろ。

http://anond.hatelabo.jp/20140604161616

すでにそうなっているものに文句を言ってもしょうがないだろ。

どうでもいいけど

Nullableの説明で

通常、値型は null 値(無効な値)を取れません。

http://ufcpp.net/study/csharp/sp2_nullable.html

とあるけど そもそも double型などはそもそも値だけではなく最初からNaNが使える。

数値とNaNの併用が可能な型。(Cの場合というのがある。)

まり用途に応じてEnumだったりdoubleだったりオブジェクトだったりを使い分ければいい。

フォーム型なんかの場合は元々オブジェクト指向になっていて、中身の実装がポインタポインタ=NULL とポインタ=BooleanObjectという実装だから出来る話。

ちなみに、未設定をCでやる場合enumではなく、ビット演算子を使うことになるかとは思う。3値ならenum C#ならNULLABLEでもいいんじゃね?

http://anond.hatelabo.jp/20140604161431

http://anond.hatelabo.jp/20140604153229

あれ、bool?否定派は三つならenumにするんじゃなかったんすか?

http://anond.hatelabo.jp/20140604154102

俺も横だから、ココにトラバつけるわ。

C#触ったことなから知らなかったけど、bool?(null 許容型)てのがあるんだね。

MSDNみてみたけど http://msdn.microsoft.com/ja-jp/library/1t3y8s4s.aspx

数値型と Boolean 型に null を割り当てる機能が便利なのは、値を割り当てられていない可能性がある要素を含むデータベースや他のデータ型を処理するときです。 たとえば、データベースの Boolean フィールドには、値 true または false を格納するか、未定義にすることが可能です。

ってことがnull許容型の理由みたいね

bool? であれば3つの状態を表すことができるかもしれないけど、やっぱりboolはtrueかfalseだよ。

MSDNにある通り、nullを許容するとしてもね。

3つ以上の状態を作りたいなら、それこそenumでもなんでも使えばいい。

bool?で宣言されてる変数を追って行って「3つの状態保持のために使ってまーす」ってコード見たら

ハァ?(゚Д゚) ってなるわ。nullはnullよ。

ログイン ユーザー登録
ようこそ ゲスト さん