- 1 名前:デフォルトの名無しさん mailto:sage [2018/12/08(土) 20:29:41.41 ID:oXOQORcd.net]
- JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう
※前スレ https://mevius.5ch.net/test/read.cgi/tech/1531818027/
- 548 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 21:14:37.90 ID:j5GMJ/X8.net]
- 単一ファイルを少し変更したいときはエディタ。
それ以外はIDEを使う
- 549 名前:デフォルトの名無しさん [2019/04/22(月) 21:42:39.28 ID:QiOq/xsC.net]
- >>537
三大Java IDEは気にはなってるけど、今の所リソース食いそうで躊躇してます。 今の所、Referenceの検索容易性から俺にはVimかなぁ。 デバッグ環境はpoorかな。
- 550 名前:print文を埋め込むしか、今の所は手が無しかな。
デバッグが必要ならAndroidStudio起動して、なおかつKotlin Scriptに変換して動かす事にします。 ScriptじゃないKotlinコードをAndroidStudioで動かす事は出来ないのかな?よく解らん。 Xcodeならplayground作れるんだが。 [] - [ここ壊れてます]
- 551 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 21:53:50.10 ID:BvK+7rjz.net]
- 君、謎の行動力がありそうでそれはいいんだけど、
本当に何から何まで無駄なことばっかりやってるからまず最初に調べる癖をつけたほうがいい この世界は一にも二にもまずは調べることが何より大事
- 552 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 22:12:50.79 ID:5CpOs8vM.net]
- KotlinやるならIntelliJ一択
あとガワが違うだけでAndroid Studioの中身はIntelliJ ※Android以外のプロジェクト作成など、一部の機能を非表示にしている
- 553 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 22:19:17.89 ID:BvK+7rjz.net]
- Kotlin勉強したいならIntelliJの無償版使うのが1番おすすめだねえ
ちなみにAndroid Studio動かすのと消費するリソースは同じ、何せほぼ同じものだし
- 554 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 22:23:01.40 ID:5CpOs8vM.net]
- >>522
・JVMはJREの一部、JREはJDKの一部 ・Java9以降「システムへの単一JREのインストール」は無くなっており、 JDKから各アプリの同梱用JREを生成する (jdeps/jlink) ・OracleJDKに含まれるJVMは既に有償化されている ・OpenJDKに含まれるJVMは今後も有償化されることは無い
- 555 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 23:33:08.26 ID:2FYuav9u.net]
- >>545
ありがとう 十分に理解できました
- 556 名前:デフォルトの名無しさん [2019/04/23(火) 12:05:16.04 ID:3Q52IgbA.net]
- >>535
>はじめてのKotlin。Javaと比較してみた >https://qiita.com/hituziando/items/fa2dc4097b24ab78276e > >30分で覚えるKotlin文法 >https://qiita.com/k5n/items/cc0377b75d8537ef8a85 もういっちょ! Kotlinまとめ - 文法詳解 - クラスとそのメンバ https://qiita.com/hicka04/items/6f47f505d7b68ede3680
- 557 名前:デフォルトの名無しさん [2019/04/23(火) 13:16:20.26 ID:gv0SOq8d.net]
- >>535
ある。ちょこっとする時は例えWindowsで IntelliJ 起動中でも Linux サーバ側でREPLやるな。 なんでかというと IntelliJ のREPLのウインドウはなんか出力がすぐ出なかったりでおかしいから。 その他短すぎるプログラムのためにわざわざプロジェクト作ったり packge 作るのもアホらしい時とか。
- 558 名前:デフォルトの名無しさん [2019/04/23(火) 14:13:43.00 ID:3Q52IgbA.net]
- Android Studio残念ポイント!
1. Android Projectしか開くことができない。 2. Hello Worldするhello.ktを開くことができない。 なんで?そう言う時は、IntelliJ使えってことか?▶なんだろうなぁ。
- 559 名前:デフォルトの名無しさん [2019/04/23(火) 14:52:10.33 ID:67h9+wNp.net]
- >>548,549
JUnit使う手がある。 しかも、main毎にファイル分けるとかしなくていいし。
- 560 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 14:54:14.57 ID:TrDrz5+t.net]
- >>548
IntelliJのあれはまともに動いてないんじゃないかとずっと思ってる まともに使えてる人いるのだろうか…?
- 561 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 15:47:52.74 ID:KnPjeA9Q.net]
- Intの変数名をintってするのってまずい?
val int : Int = 0 こういうの
- 562 名前:デフォルトの名無しさん [2019/04/23(火) 15:52:03.96 ID:3Q52IgbA.net]
- >>548
REPLねぇ。 Ruby, JavaScript(Node.js), SwiftのREPL環境を使ったことあるけど、Reflection機能が充実している言語(ruby)以外、イマイチだなぁ。 コードの編集も不自由だし。 あんた、本当にLinux側でREPLする事あるの?
- 563 名前:デフォルトの名無しさん [2019/04/23(火) 15:54:20.98 ID:3Q52IgbA.net]
- >>552
怖いなぁ。そのコード。 俺、さっき、setNameってメソッドを作ったら、clashしてるって怒られた。 clash = conflict って意味らしい。 java.lang.StringのsetNameメソッドとコンフリクトしてるから、コンパイルしないんだって。
- 564 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 16:06:01.49 ID:KnPjeA9Q.net]
-
- 565 名前:そういうことあるのか
でもIntがintじゃないのってintを変数名で使ってもいいよっていう意思を感じるんだよなあ val hoge : Hoge ってすることを考えると val int : Int も自然な気がする [] - [ここ壊れてます]
- 566 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 16:09:50.49 ID:KnPjeA9Q.net]
- ああでもjavaは予約語でintだめなのか
やっぱりやめておこう
- 567 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 16:25:21.03 ID:xD8uuYM0.net]
- そもそも逆コンパイルしたソースじゃないんだから
意味のある変数名付けなよ
- 568 名前:デフォルトの名無しさん [2019/04/23(火) 16:31:00.98 ID:3Q52IgbA.net]
- macOS10.14.3
AndroidStudio3.4 環境です。API Referenceを参照するには、どうすれば? Command-Jで起動するかと思いきや?何も起こらないっす。 Webサイトへ行かないとダメなのかな?
- 569 名前:デフォルトの名無しさん [2019/04/23(火) 17:37:07.37 ID:gv0SOq8d.net]
- >>553
ちょっと試す時とかによく使うよ
- 570 名前:デフォルトの名無しさん [2019/04/23(火) 17:41:27.91 ID:3Q52IgbA.net]
- >>559
thx そっすか。
- 571 名前:デフォルトの名無しさん [2019/04/23(火) 18:02:43.25 ID:3Q52IgbA.net]
- >>558
see the hit result of Help>Search(Documentation). You can retrieve the documents by ctrl-J@macOS as well.
- 572 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 19:19:13.65 ID:IWDMUBZh.net]
- >>555
とりあえず変な癖をつける前に『リーダブルコード』を読んでくれ、頼むから
- 573 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 19:47:01.75 ID:hcUTeQ5O.net]
- リーダブルコード読みやすいしわかりやすいし為になるし
書いたやつ神
- 574 名前:デフォルトの名無しさん [2019/04/23(火) 19:49:26.39 ID:3Q52IgbA.net]
- >>562
>リーダブルコード この本そんなに良い本なのか? ペラペラ見たことあるけど、すでに知ってること、というか、実践していることしか書いてなかった。
- 575 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 19:52:05.70 ID:Ky48Nwl1.net]
- >>564
嘘だ
- 576 名前:デフォルトの名無しさん [2019/04/23(火) 20:08:14.43 ID:gv0SOq8d.net]
- >>564
じゃあその本に書いてないことが書かれた本を出してくれ。Kindle版だけでもいいから。
- 577 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:16:21.90 ID:IWDMUBZh.net]
- >>565
知っていることを再認識させてくれる良書ではある
- 578 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:18:24.37 ID:IWDMUBZh.net]
- 何でIDが同じになるんだよ
同じプロバイダーなのか
- 579 名前:デフォルトの名無しさん [2019/04/23(火) 20:22:11.04 ID:gv0SOq8d.net]
- たまーに同じID出ることあるな。ものすごく希だが。
きっと今日は良いことあるよ。あと3時間40分ぐらいで終わるけど。
- 580 名前:デフォルトの名無しさん [2019/04/23(火) 20:22:12.06 ID:3Q52IgbA.net]
- >>565
嘘じゃない。 ああぁ。俺は間違ってないんだな。という感じ。 まあ、詳細に読んだわけでは無いし、プログラマが知るべき97のこと、って本にも似たような事が書いてある。 Matzも「名前重要」なんて事を、97本に寄稿している。 プログラミング作法、なんかの方がよっぽど良かったな。俺には。
- 581 名前:デフォルトの名無しさん [2019/04/23(火) 20:24:15.75 ID:3Q52IgbA.net]
- >>569
って事はHash algorithmがpoorってこった。
- 582 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:25:36.05 ID:B8eC+d1i.net]
- コードコンプリート
- 583 名前:デフォルトの名無しさん [2019/04/23(火) 20:27:52.73 ID:3Q52IgbA.net]
- >>570
>Matzも「名前重要」 私の設計上の座右の銘は「名前重要」です。あらゆる機能をデザインする時に、私はその名前にもっともこだわります。 courtesy of Matz
- 584 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:29:32.04 ID:IWDMUBZh.net]
- プログラミング作法
プログラム書法 ソフトウェア作法 全てブライアン・カーニハン御年77歳の名著
- 585 名前:デフォルトの名無しさん [2019/04/23(火) 20:31:32.66 ID:gv0SOq8d.net]
- >>571
まあそういうことだな。 こんな掲示板でrichにしてどうするって感じはするが。
- 586 名前:デフォルトの名無しさん [2019/04/23(火) 20:32:56.33 ID:3Q52IgbA.net]
- >>566
じゃぁ、一つ俺の考え方を! 狭いスコープの中を生きる変数は、名前が短くても良い。 e.g. str1 = “OK” 広いスコープの中を生きる変数の名前は、長い名前が必要。 e.g. numberOfBooks = 100 何時いかなる時も、意味ある変数名をつけるのは、俺は反対だ。 変数名を考える事に、時間が惜しい時もある。
- 587 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:33:50.86 ID:PyZ6tY2R.net]
- 拡張プロパティに値セットする方法ある?
- 588 名前:デフォルトの名無しさん [2019/04/23(火) 20:36:26.55 ID:gv0SOq8d.net]
- やはりプログラミングも茶道とか華道とかと同様にプログラミング道を作ってわびさびが必要な時代が来たのかも知れないな。
- 589 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:36:27.27 ID:IWDMUBZh.net]
- >>576
そ、ループ変数なんて i, j, k, ....nで良いやん
- 590 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:38:43.46 ID:PyZ6tY2R.net]
- でもkotlinでforとか使わなくね?
- 591 名前:デフォルトの名無しさん [2019/04/23(火) 20:42:02.64 ID:gv0SOq8d.net]
- >>576
変数名を日本語にすれば良い。 ソース丸ごと世界に公開する予定がないならその方が分かりやすくて良い。 日本語知らないやつには難読化して軽くプロテクトが掛かった状態にもなる。
- 592 名前:デフォルトの名無しさん [2019/04/23(火) 20:54:10.92 ID:3Q52IgbA.net]
- >>581
昔、英語が出来なかった時には、 kabuPrice とか kabuka なんて恥ずかしい名前使ってたけど、 今では、 sharePrice でないと、code reading時にストレス感じるわぁ。
- 593 名前:デフォルトの名無しさん [2019/04/23(火) 20:57:09.18 ID:gv0SOq8d.net]
- 漢字使え漢字
- 594 名前:デフォルトの名無しさん [2019/04/23(火) 21:02:15.89 ID:3Q52IgbA.net]
- val 感じ = "感じ"
print(感じ) なんと、warningは出るが、実行可能。
- 595 名前:デフォルトの名無しさん [2019/04/23(火) 21:05:59.98 ID:3Q52IgbA.net]
- Qiita見ながらKotlin修行中だけど、
Jump Command便利そう。 return@forEach continue@loop return@loop とか言うやつ。 これSwiftに欲しい。
- 596 名前:デフォルトの名無しさん [2019/04/23(火) 21:15:06.63 ID:3Q52IgbA.net]
- そんなことより、API referenceってかDocumentをofflineで見る手段、どうしてる?
Zeal, Velocity, Dashなんかを使ってるの? Android StudioでAppCompatActivetyを引くと android.support.v7.app.AppCompatActivity public AppCompatActivity() Gradle: com.android.support:appcompat-v7:28.0.0@aar たったコレだけしか表示されないっす。
- 597 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 21:32:38.61 ID:bGCgvaJg.net]
- >>517
俺も謝っておく 触ったすまん
- 598 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 21:53:05.69 ID:strBUBex.net]
- >>585
便利な反面1歩間違えると悲惨なコードになりそうだな
- 599 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 22:46:19.69 ID:B8eC+d1i.net]
- 尻でも触ったのか
- 600 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 23:21:01.87 ID:IWDMUBZh.net]
- >>585
Kotlinにあるでしょそれ https://kotlinlang.org/docs/reference/returns.html
- 601 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 23:23:43.15 ID:IWDMUBZh.net]
- ごめん間違えた、SwiftにあるからKotlinに欲しいって読み違えた
Xamarinのライセンス買ってくる
- 602 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 05:30:04.16 ID:BhgQi2cO.net]
- 悲惨なコードとは?
- 603 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 05:38:27.15 ID:MHxaAVIF.net]
- goto文みたいに次にどこに行くのか読みにくいって意味じゃないかな
そんなことはないけどね
- 604 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 05:51:11.02 ID:kB2a7+Os.net]
- 変数名漢字って結構有りだと思う
平均からすれば英語かなり必死に勉強したほうだと思うけど、ネイティブからすれば変な英語使ってるって自覚あるし ネイティブ的な感覚がないから、命名には常に苦労する もちろん特定用途でしか使えない手法だけど、やっぱり母国語ってわかりやすいよね 英語圏のやつらにスーパハカーが多いのはそういう理由もあるよな、母国語でプログラムできるのうらやましいわ
- 605 名前:デフォルトの名無しさん [2019/04/24(水) 07:33:38.62 ID:ZqBzQREh.net]
- >>594
英語人口20億、英語母語5億 くらいじゃない? チェコ、ロシア、ルクセンブルグにHacker多い印象が俺にはある。
- 606 名前:デフォルトの名無しさん [2019/04/24(水) 11:18:15.23 ID:ZqBzQREh.net]
- Constructorの書き方がムズイ。
primery, secondary constructorとか、Swiftには無いし。 Kotlinスタートブック、はしばらく様子見。今の所買わない方向で… だって、2016年の本って、情報が古そうだし。
- 607 名前:デフォルトの名無しさん [2019/04/24(水) 12:11:30.51 ID:f6AiwYyw.net]
- そのうち在日ユダヤが「日本人にベーグル盗まれた」なんて狂言やりそう
- 608 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 12:20:40.85 ID:ymPUK1bE.net]
- >>594
日本語固有のややこしい漢字の名称を無理やり英語にするよりはそのまま使った方が可読性もはるかにいいわな 何か不都合が起きたらIDEでリネームすりゃいいだけの話だから、全然ありだと思う 俺はテストケース名は日本語がんがん使う
- 609 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 12:48:24.16 ID:CTi91KC0.net]
- >>596
Swiftの designated initializer ≒ Kotlinの primary constructor Swiftの convenience initializer ≒ Kotlinの secondary constructor
- 610 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 13:08:03.94 ID:CTi91KC0.net]
- >>599の具体例
Swift https://ideone.com/48Boj1 Kotlin 比較用 https://ideone.com/ovwjrs Kotlin 短縮 https://ideone.com/IcR8Wo
- 611 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 13:28:15.20 ID:CQvKnKTI.net]
- >>577だけどこれ無理っぽいな
- 612 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 14:01:42.54 ID:CTi91KC0.net]
- >>577
勧めるものじゃないけど、一応疑似的にならば https://ideone.com/7lTdsi class A {} private val xname = WeakHashMap<Any,String?>() var A.name: String? get() = xname[this] set(v:String?) { xname[this] = v }
- 613 名前:デフォルトの名無しさん [2019/04/24(水) 14:14:45.53 ID:ZqBzQREh.net]
- >>599
thx
- 614 名前:デフォルトの名無しさん [2019/04/24(水) 14:19:09.62 ID:ZqBzQREh.net]
- >>602
Kotlin day3の俺には、なぜAのインスタンスがnameプロパティを持つのか? 良く解らん。 Rubyみたいに、Aを再オープンしてるのか?
- 615 名前:デフォルトの名無しさん [2019/04/24(水) 14:22:08.49 ID:ZqBzQREh.net]
- >>604
fun mainの外でthisは何を指してるのだ?
- 616 名前:デフォルトの名無しさん [2019/04/24(水) 14:28:29.52 ID:ZqBzQREh.net]
- >>605
>fun mainの外でthis ってのはMainKtのインスタンスってことか? うぅーん。後で確認。 fun main(args: Array<String>) {} in a file called Main.kt will compile to something like: public class MainKt { public static void main(String[] args) {} }
- 617 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 14:55:22.29 ID:CTi91KC0.net]
- >>604
602は拡張プロパティとシングルトンのWeakHashMapを利用している 詳細はgoogleで 拡張プロパティ: 見た目はプロパティだが実際のところ staticメソッドのシンタックスシュガー fun A_name_get(thisObj: A): String? { return xname.get(thisObj) } println( a.name ) ↓ println( A_name_get(a) ) WeakHashMap: キーがGC対象となるのを阻害しないMap aとnameの関連付けはここに入っている aがへの参照が無くなったら、nameへの関連付けもCG対象になって消える
- 618 名前:デフォルトの名無しさん [2019/04/24(水) 15:34:34.20 ID:ZqBzQREh.net]
- >>607
>拡張プロパティ 気になる! Rubyの特異メソッドみたいなもんか? 特異メソッド:クラスに住んでるメソッドとは異なり、オブジェクトに住んでるソレ!
- 619 名前:デフォルトの名無しさん [2019/04/24(水) 15:49:00.84 ID:ZqBzQREh.net]
- >>608
特異メソッドとは違うみたい。 Rubyのクラスの再オープン、オープンクラス、monkey patching とか言う邪悪なテクみたい。 Dateクラスに本来備わってないyesterday, tomorrowとかいうpropertyを追加したりできる。
- 620 名前:デフォルトの名無しさん [2019/04/24(水) 15:52:13.17 ID:ZqBzQREh.net]
- うぅーん。
top level でthisが何を指しているのか? よく解らん。
- 621 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 15:52:31.03 ID:CTi91KC0.net]
- 連投せずググりなさい
- 622 名前:デフォルトの名無しさん [2019/04/24(水) 15:56:37.35 ID:ZqBzQREh.net]
- >>610
きっとthisは、nameプロパティーが呼ばれるまで定まらなくて、nameプロパティーのレシーバー(a1, a2)の事なんだ。 と言う事にしておこう。 拡張関数、拡張プロパティー、が必要になった時のメモ Kotlinの拡張関数と拡張プロパティについて https://qiita.com/RyotaMurohoshi/items/4b958af1d23da6d91a61
- 623 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 17:00:48.57 ID:HA70GdMc.net]
- >ID:ZqBzQREh
日記は自分のブログでやってくれ
- 624 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 17:06:36.37 ID:ymPUK1bE.net]
- 散々言われてるみたいだけどまずとりあえずググる習慣をつけなさい
君はしなくていい回り道が多すぎる
- 625 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 20:05:15.35 ID:CQvKnKTI.net]
- >>602
なるほど外のmapに入れられたのか、盲点だった それとweakhashmapなんてあったのか初めて見たわ
- 626 名前:デフォルトの名無しさん [2019/04/24(水) 20:26:09.12 ID:ZqBzQREh.net]
- >>547
30分で…の記事、2日かけてようやくinfix記法のところまで読めた。 多分費やした時間は6hr以上。 全然30分じゃない。
- 627 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 20:28:11.81 ID:Hf91oH+Q.net]
- >>614
君も謝る羽目になるよ
- 628 名前:デフォルトの名無しさん [2019/04/24(水) 20:45:23.71 ID:ZqBzQREh.net]
- なんと、キーワードになっている識別子もエスケープ可能!
例:isと言う名前のメソッドも呼び出せる。 foo.`is`(bar) こんな感じ!
- 629 名前:デフォルトの名無しさん [2019/04/24(水) 20:49:33.98 ID:ZqBzQREh.net]
- Qiitaの30分で…の記事、走り読みした。約8hr位要した。
Vim内でチョコチョコ試運転しながら、走り読み。 お疲れ様でした。▶俺
- 630 名前:デフォルトの名無しさん [2019/04/24(水) 20:52:35.15 ID:ZqBzQREh.net]
- レシーバー付き関数リテラル、がよく解らんかった。
クラス移譲、プロパティー移譲 byとか使う奴。こんなのSwiftには無かったなぁ。
- 631 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 21:03:15.80 ID:kFXKi6KY.net]
- >>596
Kotlinスタートブック -新しいAndroidプログラミング、長澤 太郎、2016 太郎本を買っていない香具師は、モグリ!
- 632 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 21:13:18.43 ID:kFXKi6KY.net]
- Kotlin は、swift とは似ていない
Kotlin は、Groovy を静的にしたもの。 つまり、Ruby, JavaScript の系統 オブジェクト指向・関数型のミックス
- 633 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 22:03:35.37 ID:JvprRVGM.net]
- Swift程の糞はない
- 634 名前:デフォルトの名無しさん [2019/04/25(木) 06:51:51.77 ID:BgXoud3L.net]
- >>621
赤ベコ本の事ね。
- 635 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 09:50:10.40 ID:P7ID4Nfd.net]
- リーダブルコード要約
https://gist.github.com/AKB428/b8970cea987577ec93c2 初心に戻る良著 最近省略して書いてたから反省してる
- 636 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 11:34:43.93 ID:ap5qFTOn.net]
- > 読みやすい
> if (length > 10 ) > > 読みにくい > if (10 < length) その主観は慣れによる、俺にとっては前者の方が読みにくい うちでは「物差しの向きに一貫性を持たせる」という指針でやっている その上で統一のため原則として「小さい方を左に書く」 よって >, >= を使わない if (10 <= length && length < 100) まぁRangeやRectでメソッドでの判定をすることも多く そういう場合は左がどうこうというのは無いが
- 637 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 11:52:49.98 ID:8pGnANx9.net]
- >>626
>if (10 <= length && length < 100) if (length >= 10 && length < 100) たまに、こう書くヤツが居るが殺意を覚える 一般的には可変値が左だと思う
- 638 名前:デフォルトの名無しさん [2019/04/25(木) 12:18:15.49 ID:NAVagSqc.net]
- 俺も可変値が左だと思うけど、統一された指針が既にあるならそれを貫いたほうがいい
一貫性はとても大事
- 639 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 12:32:09.35 ID:wpotMNKo.net]
- 小さい方を左に書く。
頭の中では、大小は、左右で考えているから 横書きと同じ感覚。 左上がスタート地点 洋画ではそう。左上に赤色を配置する。 そこが目線のスタート地点。 そこから時計回りに目線が、渦の中心へと向かっていく
- 640 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 12:41:16.64 ID:NQvr5Lbg.net]
- >>626
普通、言葉で考えると「lengthは10以上100未満?」て聞くじゃん。 「10は〜100は〜?」みたいな聞き方しないよね。 主語と動詞を逆にしちゃいけないと思う。 CやC++の頃は if (length == 10) としたかったところをコーディングミスで if (length = 10) にしてバグるのを防ぐ為に逆向きにしてた人を見受けたけど、いまどきはIDEがエラー出してくれるからねえ。
- 641 名前:デフォルトの名無しさん [2019/04/25(木) 12:49:03.99 ID:M77Bu+mz.net]
- IDEなくてもコンパイル時になんか出る。
- 642 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 12:54:48.89 ID:P7ID4Nfd.net]
- >630
なるほど、確かにバグ防止で逆向きにも一理ある 面白いこと考えるね
- 643 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 13:03:38.24 ID:myBoG5tn.net]
- >>632
ヨーダ記法って言うやつ
- 644 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 13:14:11.32 ID:wpotMNKo.net]
- C言語では、左に代入できないものを書いていた
比較演算子と間違えて、代入演算子を使うと、コンパイルエラー
- 645 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 13:15:44.93 ID:D7t01tqT.net]
- ヨーダ記法が可読性低いってのは散々言われてる
結局流行ってないしやらなくていい
- 646 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 13:44:40.50 ID:nzEkPIBs.net]
- 老害ってことや
- 647 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 14:11:29.90 ID:MiLFxbr9.net]
- 老害にだけは成りたく無いと思ってました
- 648 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 14:21:07.30 ID:ap5qFTOn.net]
- >>630
> 言葉で考えると「lengthは10以上100未満?」て聞くじゃん なるほど、改めて思い起こすと言葉以上に図や式で考えているな そういう資料を読み書きすることが多いからかもしれないが 10 length 100 --|----^----------|-- 10 ≦ length < 100 他所のだけどイメージ https://i.imgur.com/d5iRSb2.jpg
|

|