CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。
![「デザインパターンの使い方」連載一覧](https://cdn-ak-scissors.b.st-hatena.com/image/square/106c7e478be88bc515873fc79870c7b92dd94618/height=288;version=1;width=512/https%3A%2F%2Fcodezine.jp%2Fstatic%2Fcommon%2Fimages%2Fczlogo4fb_ogp.png)
WritingTestableCode - テストできるコードの書きかた 目次 この文書について まずいのその1: コンストラクタがやりすぎ まずいのその2: 深い仲になってしまっている まずいのその3: 脆いグローバルな状態とかシングルトンとか まずいのその4: クラスがやりすぎ テストできるコードの書きかた この文書について "Guide: Writing Testable Code" の日本語訳です http://misko.hevery.com/code-reviewers-guide/ 推敲歓迎: 誤訳, タイポ, 訳語の不統一, そのほか... TODO: 各 Flaw のリンク先も訳す Misko Hevery コードをベストな状態に保つために、 我々は Google でソフトウェアエンジニアに以下のようなをガイドを定期的に送っていた。このガイドを共有できてうれしいね。 この
Thank you for your good post. I have a question about "Flaw #2: Digging into Collaborators" and "Dynamic type casting". "Dynamic type casting" means casting from one interface type to another interface type in Java or C#. Or I think QueryInterface() of COM does same thing. My question is that: Casting the interface,which is passed in, to another interface conforms to Flaw #2, Or Not. Thanks. Hyun
はじめに こんにちは。hirataraです。 私が初めて正規表現を使ったのは、PerlによるCGIでの文字列処理でした。それから私はPerlを使い続け、今では正規表現なしのコーディングは考えられないほど、正規表現を当たり前の機能として日常的に使っています。昔は標準では正規表現をサポートしていなかったJavaも、今では正規表現をサポートするようになりました。Javaだけではなく、今日ではほとんどの高級言語にとって、正規表現はなくてはならない機能であると言っても過言ではないほどメジャーな機能となっています。 本記事では、この正規表現の舞台裏に光を当てます。一見すると作ることが難しそうな正規表現エンジンですが、その根底には数学的な概念があり、その概念さえ知っていれば基礎となる機能の実装はそんなに難しくありません。この連載ではその数学的な概念をPythonを使って表現しながら、実際に動作する正規表
Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう(編集部) 「Gaucheでメタプログラミング」と題して、これからGaucheを使ったプログラミングの連載を書かせていただきます吉田裕美です。よろしくお願いいたします。 Gaucheとは 今回の連載で取り上げるGaucheはハワイ在住の日本人ハッカー、川合史朗さんが作った、Lispの一種であるSchemeのオープンソース処理系です。 Gaucheの特徴は、PerlやRubyのように気軽に使える軽い処理系だということです。Perl同様に正規表現や文字列操作が行え、ちょっとしたツールの作成にも使えます。しかし、非常に強力なCommon Lisp風オブジェクトシステムを持ち、Lispならではのマクロに加え、Webやグラフィックスなどの豊富なライブラリも持っているので実用
米Microsoft Corp.が2008年10月27~30日に米Los Angelesで開催している開発者向け会議「Professional Developers Conference 2008(PDC 2008)」で,.NET Frameworkにおける主要なプログラミング言語である「C#」の将来について,その父であるAnders Hejlsberg氏が説明した。 C#は最初の誕生からほぼ10年が経過した。2.0版でGenerics(汎化)の機能を入れ,3.0版で言語にデータベース検索機能を統合してきた。次の発展として,まずHejlsberg氏は言語の三つのトレンドを説明した。一つが動的な特性,次に関数型プログラミング機能,そして第3が並列プログラミングであると指摘した。これらのうち,「関数型プログラミング機能は既に取り入れている」(Hejlsberg氏)として,4.0版では主として動
はじめに「はじめての正規表現」がホッテントリ入りしていますが、 導入としては、何に使うのかがわかりやすくて良いのではないかと思います。 あれを見て、基本機能をまとめてみたくなったので、正規表現の基本的な機能について書いてみます。 (正規表現が初めてという人は「はじめての正規表現」を先に見たほうがいいと思います。) 例では「検索」か「置換」をするものとして話を進めていきます。 (「はじめての正規表現」が実例を中心にしたのに対して、こちらは機能を中心に書きます) 正規表現は、プログラミング言語やその他のツールなど、それぞれで微妙な違い(方言)があるので、その点には注意が必要です。 (表記法が違ったり、ここに紹介する機能がサポートされていなかったり、逆に紹介していない機能をサポートしていたりする場合があります) メタ文字とリテラル文字正規表現には、メタ文字とリテラル文字というものがあります。 メ
IBMにて2008年2月より毎月開催されている勉強会「IBM Japan Geeks」。40名以上の“Geek”が登録しているというこの会では、さまざまな言語や最新技術をディープに情報交換しています。そこで CodeZineがこの勉強会に参加し、これまで発表のあったもののうち、反響のあった4編をバージョンアップして再現していただきました。この会の模様を2回に分けてレポートします。 IBM Japan Geeksとは まず、「IBM Japan Geeks」(Geeks)発足の経緯から現在までの活動内容について、伊尾木氏から発表がありました。Geeks発足のきっかけは、2007年に社内で開催された「ITLMC RoR(Ruby on Rails)勉強会」だったと言います。この勉強会には”とがった”人がたくさん集まっており、このまま別れていくのももったいないということで、Geeksが発足しまし
第2回 簡潔なコーディングのために (2017/7/26) ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21) Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう 第1回 明瞭なコーディングのために (2017/7/19) C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える Presentation Translator (2017/7/18) Presentation TranslatorはPowerPoint用のアドイン。プレゼンテー
インスタンスメソッドは、「dateFormat.parse」のようにオブジェクト名と組み合わせて呼び出されるので、組み合わされたときに重複なく意味が通る名前にします。クラスメソッドとクラス名も同様です。 // ×parseDateStringだとクラス名のDateFormatと // dateが重複するため、若干冗長 DateFormat dateFormat = new DateFormat("yyyy-MM-dd"); Date startDate = dateFormat.parseDateString("2008-04-01"); // ○クラス名のDateFormatとメソッド名parseの // 組み合わせで、何を行うのかは十分理解できる DateFormat dateFormat = new DateFormat("yyyy-MM-dd"); Date startDate
良いコ-ドへの道―普通のプログラマのためのステップアップガイド 第2回名前付け重要。または、良いコードは良い名前から生まれるんです。―その1 良い名前の条件 Coding is freedom(犬井ヒロシ風) プログラミングは自由です[1]。たとえば「コネクションに接続できないときの例外クラス」が必要になったら、「FatalConnectException」「CannotConnectException」「ExternalConnetException」といったふうに、いかようにも作成することができます。設計やアーキテクチャの決定なども組み合わせは無限にあり、どれを選択するかに絶対的な決まりはありません。今回は自由だからこそ難しい「名前付け」についてのお話です。 良い名前をつけよう プログラミングを行っていると、変数名、メソッド名、クラス名など「名前」を考える場面が多々あります。良
Template Methodパターンの例 デザインパターンは強力なツールです。強力なツールには常に誤用の可能性があります。注意を怠ると、ぐちゃぐちゃで何だかよくわからないものを作ってしまったりする危険性があります。 Template Methodは、2つ以上の関連するクラスの間での重複をなくすための、1つの解決策を提供するデザインパターンです。これはGammaらによる『Design Patterns』(1995年)で取り上げられていた23個のパターンのうちの1つです。 Template Methodパターンはリファクタリングの目標と考えるのがよいでしょう。本稿では、この目標に向けてコードを手直しする方法を、具体的な例を見ながら説明していきます。「Template Methodパターンとは何ぞや」ではなく、実際にリファクタリングを行い、その結果について語ることにします。 今回のサンプルでは
Microsoft 製の最新のコマンドライン環境「Powershell」が面白かったので、楽しいところをまとめてみた。UNIX な人にも使いやすい親切設計コマンドプロンプトでファイル列挙と言えば dir だけど、Powershell では ls も使える。 PS> ls Directory: Microsoft.PowerShell.Core\FileSystem::C:\ Documents and Settings\nitoyon Mode LastWriteTime Length Name ---- ------------- ------ ---- d---s 2006/02/19 22:35 Cookies d-r-- 2006/02/17 23:39 Favorites d-r-- 2006/02/19 18:56 My Documents d-r-- 2004/08/19 9
前回はJavadocを書く - しげるメモというタイトルで話を進めましたが、今回は逆にJavadocを減らすプラクティスについてメモがてら。 私は別にJavadocを書くのが好きなわけではなく、単純に書いたほうがめんどくさくないと思うのでそうしてます。ただ、Javadocを書くのもかなりめんどくさいとは自分自身で感じているので、そのめんどくささをできるだけ減らす道を現在も模索中です。 やり方としては単純で、次のうちどちらかです。 Javadocをそもそも書かない Javadocに書くことを減らす かなりの部分がEffective Java (Java Series)に紹介されているプラクティスとかぶりますが、ここではあくまで"めんどくさくないJavadoc"という視点でいきます。 Javadocをそもそも書かない If an API is to be usable, it must be
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く