タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。
数列の和を求めるプログラムを作成することになり、意気揚々と以下のようなプログラムを書いたという状況を想像して下さい。 function sum(nums, acc = 0) { if (nums.length === 0) return 0; if (nums.length === 1) return nums[0]; return sum(nums.slice(1), acc + nums[0]); } const nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; console.log(sum(nums)); // expected: 55 一見すると何も問題なさそうに見えるプログラムですが、実はバグがあります (皆さん分かりますか?) *1。実際に上記プログラムを実行すると 55 ではなく 10 が出力されます。 こうした場面に遭遇すると、自然と sum
今回のエントリでは先日、僕が勤めているソニックガーデンで話題になったプログラミング関連の小ネタを書きます。 それは何かというと、「プログラミング初心者は変数名やメソッド名を略さない方がいい」という話です。 長い変数名やメソッド名はつい略したくなります。 実際、僕も長い名前を略すときはよくあります。 ですが、略称を使うのは長年の経験から「この略称は一般的だから誤解を招くことはきっと少ないだろう」とか「前後の文脈から、変数の中身は誰が見ても明らかだろう」という想像が付いた場合だけです。 一方、プログラミング初心者の人は経験が浅いため、「一般的かどうか」とか、「誤解が発生しないかどうか」といった判断ができません。 そのため、他の人が見たときに「え、何この変数名?」と思ってしまうような略称を付けてしまう恐れがあります。 たとえば、先日のコードレビューで、初心者の人がrev_noという名前の変数を定
VSCodeで日本語の音声入力が可能に、Copilotがコードに合った変数名を提案など新機能。2024年2月のアップデート コードエディタのVisual Studio Code(以下、VSCode)は2024年2月のアップデートで、音声入力やCopilotによる変数名の提案などの新機能が追加されました。 More developer goodness in the February update of @code Use your voice to write code (in your language!) Code faster with multi-cursor suggestions Renaming gets easier (because it's AI powered) Release notes: https://t.co/zwokiQvbPU Download: http
2021年5月5日、MicrosoftのC# のコーディング規則 (C# プログラミング ガイド)に今まで明言されていなかったprivateなメンバ変数(field変数)への命名規則が記載された。 ちなみに同じMircrosoftが出してるStylecopやFxCopといった静的コード分析ツールの現在の仕様は「アンダーバーは付けるな」で、 おそらく.Netだけがアンダーバーを付けていたが、今後はそういったツールも.Netに合わせる流れになっていくと思われる。 private または internal フィールドに名前を付ける場合は、Camel 形式 ("camelCasing") を使用する必要があり、_ プレフィックスを付ける必要があります。 https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/inside-a
教育用の覚書 Python だと汎用の Runge-Kutta 法のルーチンが6行で書けてしまう*1。以下のコードではルンゲクッタ法ルーチン rk4() を書き換えることなく、1階, 2階, 3階の常微分方程式(ordinary differential equation(s), ODE)を解いている*2*3。関数 rk4() で使っている変数名はRunge–Kutta methods - Wikipediaに揃えた。C言語*4で数値計算をコーディング/教育する気力が一気に失われてしまったwwwwww 次のコンプリートコードは次の微分方程式を積分して、あらかじめ求めておいた解の関数の値と比較している*5: class getExpt(): [1階] (比較する解:); class getSint(): [2階] (比較する解:); [1階連立ODE] class getExptSint()
JavaScriptの全貌を知るには、人生は短すぎます。大まかに把握したと思っていても、少し時間が経つと、またわけのわからない構文が現れます。 特に最近増えてきた記法として、代入の左辺に、括弧が使われているというものがあります。今回は、これの正体を探ってみましょう。 括弧のついた代入たち JavaScriptにおいて、代入とは一般に以下のようなものを指します: const myNumber = 100; しかし、モダンなライブラリを使用していると、以下のようなサンプルコードを見かけることがあります: const [job] = client.exec(); また、Node.jsにおいて、以下のような構文を見かけることも増えてきました: const {SampleClass} = require('sample-lib'); どちらも少し不思議です。左辺の変数名が括弧([]または{})で括ら
data とか info とか list とか item とかいう変数名止めろ currentData itemInfo dataList とかなんとかいうダッサイ変数名マジで止めろ。 ただ単に「ネーミングセンスがダサい」という話では留まらず、実際に悪影響を及ぼすネーミングだから、止めるべき理由と、止め方・改善方法を教える。 2022-03-13 : 本記事の発展形とも呼べる記事を新たに書きました。 「説明変数」と分かりやすいコードを書くことの価値 目次 TL;DR : 何が悪いの? コード例 どう直したらいいの? list は書かず、単語の複数形にする どんな data・info なのかを考えて名前を付け直す 英語できないならできるようになれ・大体日本語もできてねえだろ 横着すんな TL;DR : 何が悪いの? → 「どんな data なの?」「どういう意味を持つ list なの?」とい
【お詫びと訂正:2024年3月22日午後20時】初出時、バージョン1.87でリモート開発拡張機能がフル機能になったかのような誤解を招く表現となっていたため、バージョン1.87で追加された機能が「開発コンテナ構成ファイルをワークスペースに追加するときに、GitHub Copilot Chatがテンプレートと機能(ツール)を提案」するものであると分かるよう修正いたしました。お詫びして訂正させていただきます。 Microsoftは2024年2月29日(米国時間)WindowsやLinux、macOSに対応するクロスプラットフォームのエディタ「Visual Studio Code」(VS Code)の「February 2024」(バージョン1.87)アップデートをリリースした。今回の主なアップデート内容を紹介する。 VS Code Speech 音声入力機能 拡張機能「VS Code Speec
今回は変数名の付け方についていろんなサイトや書籍を漁ってみたので、自分の解釈でまとめてみました。 最後におすすめサイトも紹介しているので、そちらを見ていただくとより理解が深まると思います! 良い変数名とは 良い変数名は「必要な情報が含まれている」といえます。 例えば「name」という変数名はフルネームなのか名字なのか名前なのかが分かりませんが、 「fullName」だと「フルネームなんだな」と理解できます。「name」だと情報不足なことがあります。 良い変数名をつけると「無駄なコメントが減る」「他の開発者にとって読みやすい」などのメリットがあります。 無駄なコメントは開発者を混乱させますし読みにくいコードはバグが生まれる原因になるので、変数名はかなり重要です。 変数名をつけるコツ ①広く意味を持つ名前をつけない 先程例に上げた「name」は広い意味を持ってしまっているのでフルネーム?名字?
はじめに 新規追加する関数名に悩むとき、通常の翻訳サイトだと物足りないこともありますよね。 で、「確かQiitaで命名に関するチートシート記事があったよな~」という記憶だけが残っており、その時に見つけ出せなかったので半分自分用にサイトをまとめておこうと思います。 何かいいものがあったら随時更新していきます。 命名するその前に:既存プロジェクト開発ならプロジェクトの規則・文化も考慮する もし既存プロジェクトに参入し、そこで新規関数や変数を作ろうとしている場合には、以下のような点があるかも意識した方がいいと思います。 そのプロジェクトでの命名規則 「こういう機能ではこの単語を使うべし!」みたいな暗黙の文化 既存プロジェクト内のソースコードと全然違う命名をしてしまうと、同一機能のgrepに引っかからなくなる等デメリットもあるので。 特に歴史の長いプロジェクトに新規参入した場合等は、正当な理由での
共通事項 そもそも、「よい識別子の命名」とは一体何なのでしょうか。これについては明らかで、「素早くコードの意図を把握することができる命名」となります。また、プログラミング言語は自然言語である英語をベースに設計されています。このため、これから書き連ねていくルールは、すべて「プログラムを英文として読むことができるか」を意識しています。 表記方法のルールを確認する 多くのプログラミング言語では、識別子はその種類によって標準的な命名規則が決まっています。通常、その識別子の利用方法に応じて、下の5種類の中から選んで使用することになります。 キャメルケース (camelCase) パスカルケース(PascalCase) 小文字のスネークケース(snake_case) 大文字のスネークケース(SNAKE_CASE) ケバブケース(kebab-case) # 🚫 クラス名がスネークケースで、メソッド名が
英語のニュアンスがわからないため微妙なところで名付けに困ることがあります。 これは自分なりの使い分けのガイドラインです。 どういう表現を使用するか 積極的に採用 hoge_number : 番号を表すときはnumber hoge_count : 計数(個数や回数)を表すときはcount 採用したくない number_of_hoge : 長くなるから嫌う人は多いと思う hoge_no : noでは意味がわからない コレクション 積極的に採用 hoges : 一般的に複数形にすることでコレクションであることを表現できる hoge_group : なんらかの規則で集められたグループであることを示唆できるかもしれない 採用したくない hoge_list : データ構造を明示するのは冗長(だが必要となることもある) 〜〜者 日本語では多用するが英語にするのが難しい。特に「担当者」という言葉はなんでも
分岐が多くても見た目がカオスにならない三項演算子の代替的な何か。 ふと思いついたのでメモっておきます、結構便利。 ズバリ const str = "aaa"; const num = 0; const arg = "0123"; // 戻り値がある場合 const result = { "aaa": v => `${v}hoge`, "bbb": v => `${v}huga` }[str](arg); // 戻り値がない場合 ({ "aaa": v => console.log(`${v}hoge`), "bbb": v => console.log(`${v}huga`) })[str](arg); // プロパティ名ではなくメソッド名としてもOK const result = { "aaa"(v){ return `${v}hoge`; }, "bbb"(v){ return `${
こんにちは。この記事は筆者が開発したESLintプラグイン「eslint-plugin-var-length」を宣伝する記事です。このプラグインを使うことで、変数の生存範囲の広さに応じて変数の最低文字数制限を変えることができます。 変数名の長さについて 変数名というのは、プログラミングにおいて非常に重要な要素です。どんな変数名でもプログラムは動きますが、変数名はプログラムの読みやすさに大きな影響を与えます。極端な例では、変数名が順番にa, b, c, ……だとしたらそのプログラムはとても読めたものではないでしょう。 変数名は何が入っているのかが分かりやすい命名が理想的ですが、変数の名前の良し悪しのチェックというのは困難なタスクです。変数名がチェックされる主な機会はコードレビューであり、変数名の良し悪しを人間がチェックしなければいけません。プログラミング、特にコードのチェックにおいては機械的
地味に面倒な print を拡張する Pythonでprintを行う際、変数名を一緒に記述しないと出力結果が数字だらけになってコード検索もできないため、以下のように記述する人は多いと思う。 one_two_three_list = [1, 2, 3] print('one_two_three_list = ' + str(one_two_three_list)) # 出力結果: one_two_three_list = [1, 2, 3] しかしこの方法だと記述量が多くなってしまうため、どうせ後で使わないから数値だけ表示すればいいや、となってしまう。(経験則) そこで、print_関数を定義しておくことで普段のprintに加えて変数名も表示することができる。
動作確認環境 Ubuntu 18.04 Go 1.14.2 macOSでも動くと思います。 背景 Go Toolsに含まれるgorenameは、様々な変数の名前を変更するためのツールで、リファクタリングなどに活用できます。 ただし、エクスポートされた変数の場合は、マシン内のワークスペース( $GOROOT および $GOPATH )をスキャンするという挙動があり、非常に時間がかかることがあるようです。 (参考) $ gorename -help : gorename automatically computes the set of packages that might be affected. For a local renaming, this is just the package specified by -from or -offset, but for a potential
ブログツールとして世界中の多くのサーバで使われている WordPress のソースコードの、数限りなくある中のちょっとした修正は、変数名の”pee”と”tinkle”を書き換えるというものでした。 -442 function wpautop( $pee, $br = true ) { +442 function wpautop( $text, $br = true ) { wpautop()という関数は、ブログ記事のテキストに2行以上の改行があった時、それを<p>タグに置換する、という働きをします。 「WordPress(wp) が自動(auto)で p(タグ)をつける」といったあたりから命名された関数だろうと思いますが、WordPress の歴史は長いのでこの関数も昔から存在していたようです。 それで、この関数を書いた誰かは「オートでPする」の響きからの連想か、引数名に $pee(しっこ
おおざっぱなタイトルすぎる。 Common LispやSchemeといったLisp族はきわめて構文の構造が簡素である,といったことはわざわざ説明の必要もないでしょう。リストとして式のASTを表現するわけです。 (defun foo (bar) (+ foo bar)) ; あらゆる構文がリスト 構造が簡素ということは,それを表現するのに必要な,言い換えると予約しなければならない文字があまり無い,ということでもあるわけです。 事実,Common Lispでシンボルとして使えない文字を探してみると,他言語よりは少ないのです。ちょっと探してみましょう。 使えなそうな文字 () ' 空白 # : " . \ いろんな文字で変数定義してみる @ % 不等号 スラッシュ [] はてなでわっしょい -> 感想 オチ 使えなそうな文字 () 言わずもがな,Lispはカッコでリストを表現するのでカッコは使え
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く