タグ

Qiitaとプログラミングに関するsatoshieのブックマーク (20)

  • 「例外」がないからGo言語はイケてないとかって言ってるヤツが本当にイケてない件 - Qiita

    この記事は、Go3 Advent Calendar 2018 の8日目の記事です。 7日目は @codehex さんによる「Go でアプリケーションとクライアントのミドルウェアを作成する方法知ってますか?」でした。 日はネタ全開でお送りいたします。 Disclaimer(免責事項) はじめに言い訳というか、これを書いた経緯というか。 プログラミング言語をdisる人をdisる芸を見たいですね! — yet another (@Maki_Daisuke) 2018年10月11日 というツイートをいたしまして、言った手前自分でやるか、と思い立った次第です。 なので、ネタとしてお楽しみください。 なお、炎上した場合にも、それすらもネタとして楽しむ所存ですのでアシカラズ。 それでは、いってみましょう。 Go言語がイケてない…だ…と……? Go言語はイケてない言語としてよくdisられているが、その中

    「例外」がないからGo言語はイケてないとかって言ってるヤツが本当にイケてない件 - Qiita
  • チーム開発の生産性が向上する良いコードの書き方:強いエンジニアになるための思考法 - Qiita

    概要 この記事では、エンジニアにとって重要な、 「良いコードとはなにか? どうすれば良いコードが書けるのか?」について、 基礎の考え方から、私なりに頑張ってまとめて記載してみようと思います。 ターゲット 新卒~1年目のエンジニア向けにわかるように、なるべくかみ砕いて説明をしようと思います。 第1章:良いコードとは? まず初めに、良いコードとは何でしょうか? ここでは会社に所属するエンジニアの視点から考えてみましょう。 会社に所属するエンジニアに求められるのは、 利益のあるソフトウェア(ゲーム) を作ることです。 言い換えれば、良いコードとは ソフトウェア(ゲーム)が生み出す利益を最大化するためのコードと言えます。 ここから、推論を進めてみましょう。 ⇒ 良いコードとは? ⇒ ソフトウェア(ゲーム)が生み出す利益を最大化するコード ⇒ 利益を最大化するためには? ⇒ 少ないコスト(時間・人件

    チーム開発の生産性が向上する良いコードの書き方:強いエンジニアになるための思考法 - Qiita
  • 「良い名前付け」の参考サイトまとめ - Qiita

    おはようございますこんにちわこんばんわ。どうもぶたです。 以前、チーム内で「変数や関数の名前に妥協したくないなー。どうしたら上手く命名できるんだろう?やっぱり英語の勉強?」という話になったので、今回は名前付け、命名についてまとめます。 とは言え、自分自身多くの記事やドキュメント、書籍などに助けられているので、ほぼ紹介記事になります。 ただ、順番には気をつけた方がいいと個人的には思っています。 何事もそうですが、なぜやるのかを知ってからどうやるのかを学ぶべきかな、と。 例えば、「この単語とこの単語はニュアンスが違う」「そんな単語存在しないよ」「単数と複数が間違ってる」 そんなレビューを受けたことがある人もいると思います。僕も言われたことがあります。 そういった内容の記事もたくさんあります。僕も読み込んでいますしストックして参照できるようにしています。 それはそれで有用ですし、是非意識していき

    「良い名前付け」の参考サイトまとめ - Qiita
  • あいまいを避けて勘違いの起きない命名をするための体系的分類(を目指して) ―― 英文法による一般化と明確化 - Qiita

    はじめに:この記事を書いた動機 これらの素晴らしい先行記事を見て、「言語学を用いれば、共通点を見つけ出して一般化・大項目化したり、取り違えやすいエッジケースを明確化できるんじゃないか?」と思ったことが、この記事を書き始めたきっかけになります。 1章は3つの主要なパターンとその詳細・例外、2章はそれらに関する文法的な解説になっています。 構造化・体系化が必要な理由 太郎くんと花子さんが英作文の問題を解いています。 次の日語を英文に訳せ。 (1) 彼女は楽しい人だ。彼女といると退屈することがない。彼女はいつも新しいことに挑戦して…… 太郎くん(『楽しい』って英語で何やったっけ……) 狩井先生@ 1年6月「exciting は楽しいって意味やで~」 ~~ 月日が流れる ~~ 柱鈴先生@ 2年4月「excited は楽しいって意味やで~」 太郎くん(……って教わったけど、exciting か e

    あいまいを避けて勘違いの起きない命名をするための体系的分類(を目指して) ―― 英文法による一般化と明確化 - Qiita
  • Cognitive Complexity メモ - Qiita

    Cognitive Complexity というコードの理解しやすさを測る指標がある。 提唱されているドキュメント https://www.sonarsource.com/docs/CognitiveComplexity.pdf語での解説 https://qiita.com/suzuki_sh/items/824c36b8d53dd2f1efcb 似た指標としては、Cyclomatic Complexity(循環的複雑度)があるが、こちらは実行経路の数を算出しているので、コードの理解しやすさと必ずしも一致するわけではない。 上記、qiita 記事にある switch 文の解説が分かりやすい。 Code Climate CLI によるチェック 手軽に手元のコードの Cognitive Complexity をチェックしたければ、Code Climate CLI の Docker イメー

    Cognitive Complexity メモ - Qiita
  • こんなコードは嫌だ、古い書き方のコード駆逐したい(とりあえず9つ) - Qiita

    時代は令和ぞ、何を書いとるんや 転職してきた若いプログラマが変なコード書いている。 どうやら前社の社内研修で教わったとのこと。 さて、何を教わったのだろうか。 ※一応TypeScriptで書きましたが別にC#でも言えることです。 ※CやC++やアセンブラのことは全く知らないので、そのあたり詳しい人は今どんな書き方か記事書いていただけると勉強になります。 1.変数名が雑 クラス、関数、変数、どれも命名は難しいものです。1 大体が英語で大変です。けど頑張ってわかりやすい名前つけるようにしています。 読んで勉強してください。Google翻訳使ってください。 10行程度の短い関数ならretでもdataとか適当な名前でもいいけど 長くなるようならちゃんと名前つけてるようにしたほうがいいです。 わかりやすい変数名をつけることでひと目で、その変数の役割が理解出来ます。 // Goodってなんやねん!な

    こんなコードは嫌だ、古い書き方のコード駆逐したい(とりあえず9つ) - Qiita
  • Serviceクラスの意義と勘所 - Qiita

    今回はRails界隈でもいくつかの議論がある「Serviceクラス」について 一つの考え方を書いていこうと思います Serviceクラスとは MVCやDDDにおいて分離させているレイヤーの責務が大きくなった際に活躍の場がある概念です DDDでは「ドメインサービス」と「アプリケーションサービス」とそれぞれのレイヤーで定義されていますが MVCにおいても「モデルサービス」「ビューサービス」「コントローラーサービス」みたいな考え方ができますね ただし、「ビューサービス」ではなく「ビューヘルパー」だったり、別に置き換えられたりします それ故、世間一般にいうServiceクラスは「ドメイン知識を持った手続きクラス」を指すことが多いです 意義 MVCなど完成された概念になぜServiceクラスが必要なのか? その答えは肥大化したクラスを整理することにあります 処理系をまとめて、カプセル化し、責務を分け

    Serviceクラスの意義と勘所 - Qiita
  • ライブラリの紹介文でよく見かけるけどいまいち意味が分からない英単語 - Qiita

    ライブラリの紹介ページや GitHub のリポジトリで登場する「割と見るけど意味はよくわからない単語」をまとめてみました 誤りがあればガンガン指摘してもらえると助かります opinionated 意味をググると「[形容詞] 自説を固執する」という謎の和訳が出てきて理解を諦める方もいるんじゃないでしょうか opinionated については色々な記事で紹介されています https://qiita.com/baby-degu/items/7dc4548bf7befc2671f4#opinionated%E3%81%A8un-opinionated https://stackoverflow.com/questions/802050/what-is-opinionated-software プログラミングの文脈に落とし込むと「ライブラリやフレームワークが定義したやり方に利用者(プログラマ)を従わ

    ライブラリの紹介文でよく見かけるけどいまいち意味が分からない英単語 - Qiita
  • 「この位置にprintfが無いとなぜか動かないんだ。」 - Qiita

    はじめに 先日ツイッターで見かけた呟き pic.twitter.com/33Yk02hu1U — TOMO (@tomozh) October 14, 2020 そういうこともあるのか的な反応もあるようなので具体例を挙げてみることにする。 例1 所謂FizzBuzz問題。 #include <stdio.h> void fizzbuzz(int n) { int next; int i = 1; do { printf(i % 15 ? i % 5 ? i % 3 ? "%d\n" : "Fizz\n" : "Buzz\n" : "FizzBuzz\n", i); if (i++ >= n) next = 0; } while (next); } int main(void) { printf((char[]){""}); // この位置にprintfが無いとなぜか動かない fizzbuz

    「この位置にprintfが無いとなぜか動かないんだ。」 - Qiita
  • GitHubのREADMEをサクッと高品質で書けるサービス作ってみました。 - Qiita

    みなさんは GitHub でオープソースソフトウェア(OSS)を開発して公開する時、README をどのように書いているでしょうか? GitHub が自動で作ってくれる README に含まれるのはタイトルだけですし、OSS 開発初心者の場合、そもそも README に何を含めるべきかわからないという方もいらっしゃるのではないでしょうか?OSS 開発に慣れている方でも、コードを書くのはいいけれど README を書くのは面倒だと思ったことはありませんか?今回はそんな README 難民の方々向けの Web サービスを作ってみました。 LEADYOU - README Generator Web サイトへ 使い方 使い方は簡単です。トップページで GitHub の Public リポジトリの URL を入力してNext Stepボタンを押すと、README に書くべき内容ごとにフィールドが設

    GitHubのREADMEをサクッと高品質で書けるサービス作ってみました。 - Qiita
  • 成功する実践的モブプログラミング - Qiita

    ※ https://zenn.dev/erukiti/articles/mob-programming に移動しました。この記事はいずれ消す予定です。 モブプログラミング(以下モブプロ)とは、複数人で一つの成果物(プログラムコード)を生み出すという、チーム作業のテクニックです。似たテクニックにペアプログラミングがありますが、モブプロは3人以上(4〜5人を推奨)でやるものであり、また、目的や効果も全く違うものです。 モブプロのコンセプトは、チームでコミュニケーションをして問題を解決するというチーム戦 です。これ最重要なので、あとで何回も登場します! この記事には「成功する実践的モブプログラミング」というタイトルを付けています。ここでいう成功の定義は、モブプロが実際に効率よく実践できることとします。モブプロに関する記事・情報は「イベントでお試ししてみた」とかが多い傾向があるため、ここでは実践に

    成功する実践的モブプログラミング - Qiita
  • 仕様の変更に強いコードを書きたいよねって話 - Qiita

    この記事は NIJIBOX Advent Calendar2019の13日目の投稿です。 背景 何かしらのロジックを作る際に、仕様変更に強いコードを書きたいぞい!ってエンジニアだったら思いませんか。今の仕様なら動くけど、もし仕様が変わり、そのために関数全書き直しとかしんどみが深すぎます。今回はこのしんどみを少しでも回避できるように柔軟なコードを書くぞい!って記事です。 ページネーションコンポーネントを例にしますが、なぜページネーションなのかというと僕が最近業務でページネーションを作り、かつ仕様の変更に強いコードの大切さを実感したからです。 そもそもページネーションとは ページネーション(pagination)とは、日語で丁付け、ページ割りという意味で、Web制作においては、検索結果一覧など、内容の多いページを複数のWebページに分割し、各ページへのリンクを並べてアクセスしやすくするために

    仕様の変更に強いコードを書きたいよねって話 - Qiita
  • 小学生にプログラミング教育をしてきて分かったこと|nobkz

    こちらの記事を読みまして、なんとなくでは私も仕事でプログラミング教育の先生をやってきて分かった内容について書いていきます。 しかしながら、私は小学生1~6年生までしかプログラミング教育についての経験しかありません。残念ながら中学生、高校生、大学生となるとなにも経験がないので、「こうすればよいのでは?」という仮説レベルでしかないです。 ですが、小学生の教育については私はそれなりに3~4年ぐらいかな?経験があるので(まだその程度なのでなんともって感じもあるんですが)、現時点で思うところを書いていこうかなと。 1.低学年、中学年、高学年で発達段階や、個人の能力や知識の差大きいこと 私の経験ではまず初期のころは、小学1年~6年生合同で、プログラミング教育をやっていましたが、学年を超えてのクラスは非常に難しかったのは覚えています。 考えてみれば当然なのですが、小学1年生だと漢字がわからなかったり、算

    小学生にプログラミング教育をしてきて分かったこと|nobkz
  • Promiseと仲良くなって気持ち良く非同期処理を書こう - Qiita

    コールバック地獄を解消するPromiseパターン Promiseは非同期処理のデザインパターンの一つです。非同期処理関数の戻り値として「処理の途中」を意味するオブジェクトを返す事で、かゆいところに手を届くようにします。ちなみに言語によってはFutureと呼ばれることもあります。(参考: future - Wikipedia) 言語によって何が利点になるかは微妙に異なりますが、JavaScriptではコールバック地獄を抑止できる事が大きいでしょう。 JavaScriptでよく見られる非同期処理は、処理結果をコールバック関数で受けるパターンですね。標準APIでも頻繁に用いられています。

    Promiseと仲良くなって気持ち良く非同期処理を書こう - Qiita
  • [翻訳]あなたがプログラミングに向いていない10のサイン - Qiita

    ※この記事はJonathan Bluks氏の「10 Signs You Will Suck at Programming」を翻訳したものです。Mediumのコメント欄より翻訳の許可を頂きました。ありがとうございます。 より多くのステッカーは、より多くの成長にはなりません。 最近、RedditやQuoraで「自分がプログラマとして成功できるか、どうすれば分かりますか?」という質問をよく見かけます。キャリアチェンジを検討したり、あるいはソフトウェア開発に興味があったりするのであれば、それはごく自然な疑問です。 コンピュータに関する正式なトレーニングを受けていない場合、人々はプログラマになることに大きな心理的障壁があると思います。プログラミングが苦手であれば、あなたは自分がプログラマとして才能が無い人だと思うのは自然な考えです。もしあなたが俳優になりたいと思っていて、自分は演技が得意かどうかを疑

    [翻訳]あなたがプログラミングに向いていない10のサイン - Qiita
  • 外国人が語る:英語でクラスやメソッド等の名付け方 - Qiita

    アメリカ人です。 Hello 👋 この記事の目的 多くの日人は自分の英語力には自信がないではないでしょうか。残念ながら「英語がわからん」、「英語が全然できない」という声をしょっちゅう聞いています。でも、今まで英語ができて意味がちゃんと伝わる何人かの日人に会ったがあります。完璧な英語ではないけど(外国人も英語でミスる時もある...)、がんばって話そうとするので充分仕事ができる人たち。そういうがんばる姿勢はオープンソースのプログラムや英語圏のプログラムに手を出すためには一番大事なことだと思います(外国人側もすごく助かります)。日文化では「私はできる!」と自慢することは少ない中、この記事を通して、流暢に話せなくても自分のプログラミングの命名の仕方にはちょっとだけでも自信を持たせたいなと思います。完璧じゃなくていいです。Let's go! 合わせて読んでいただきたい 【日エンジニア

    外国人が語る:英語でクラスやメソッド等の名付け方 - Qiita
  • クソコードにならない為に、これだけは守って欲しい7つのこと - Qiita

    まえがき 今回書く内容は、ある程度経験あるエンジニアでも、陥りがちなものに絞って書いてみたつもりですので、[重複コードは書かない]などの超あたりまえの事は書いていません。 2017/03/16 最近よく見られてそうなので1つ追記[そもそも継承するな!!!] そもそも継承するな!!! 継承するのは、どうしようもない場合のみにしてください。 その前に、strategyパターンや、compositeパターンなどの他のやり方を考慮してもなお、継承するのが妥当である場合のみにしてください。 基的に継承しないほうが、スケーラブルだし、テストコードも容易にかけます。 継承はis-a関係 「あー、継承ね。はいはい」で飛ばしてんじゃねーよ。 いやマジで!!! ほぼ全てのエンジニアは[is-a]が何か知っています。 というのも全てのオブジェクト思考の書籍には出てくる概念だからです。 しかし、私の経験上この概

    クソコードにならない為に、これだけは守って欲しい7つのこと - Qiita
  • 新人プログラマが知るべきプログラミングの原則6選! - Qiita

    この記事について この記事は筆者がプリンシプルオブプログラミングを読んで、備忘録的にまとめたものです。 これから紹介する6つの原則を用いて、「よいプログラマ」に近づきましょう! 新人プログラマが知るべきプログラミングの原則7選 KISS Keep It Simple,Stupid シンプルにしておけ、愚か者よ コードを書くとき、「単純性」や「簡潔性」を最重要項目ということ。 コードは、自然に任せて修正していくと、無秩序になり、複雑になる。その結果、読みにくく、修正しにくくなっていく。コードをシンプルに保つことで、修正に容易にすることができる。 具体的には、プログラミングをする際に、「動作させるために、もっともシンプルなものは何か」と常に問いかけることが必要である。 DRY Don't Repeat Yourself. 繰り返すな。 同じコードを重複して書くなということ。 なぜかというと、コ

    新人プログラマが知るべきプログラミングの原則6選! - Qiita
  • ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習

    最近、あまりプログラミングが得意でない人のサポートをする形で、長い時間にわたってペアプログラミングを行っている。そのなかで、気がついた悪い習慣と成長するための良い習慣というものをまとめてみる。 この記事のバックグラウンドとなる体系的知識がになりました。 エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング あわせて読みたい 経営者マインドが足りない!vs. 現場に任せてくれない!の対立をなくすカードゲームをつくった話 新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習 あきらめるにはまだ早い!ソースコードの品質向上に効果的なアプローチ 心理的安全性ガイドライン(あるいは権威勾配に関する一

    ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習
    satoshie
    satoshie 2015/09/09
    だいぶ当てはまるので反省…。
  • クラスの命名のアンチパターン - Qiita

    昔から「名は体を表す」と言ひます。クラスの名前がクラスの果たす役割と一致してゐるかどうか常に考へ続けませう。 ImageInfo, AccountData, etc. Info って何やねん? Data って何やねん? ImageInfo って Image とはどう違ふねん?? FooInfo や FooData よりも好ましいかもしれない名前の例: FooAttribute, FooProperty, FooMetadata, FooDescription FooConfiguration, FooSetting, FooParameter FooResult, FooStatistics, FooSummary FooBuffer, FooList, FooCollection, ... ProductListItem, TranslationTableEntry, etc. Prod

    クラスの命名のアンチパターン - Qiita
  • 1