class String def foo "foo" end end puts "".foo # prints "foo" オープンクラスの問題は明白です。我々はソフトウェア設計の古くて議論の余地のない原則であるモジュラリティを使うことが可能です。長年に渡って、ものすごい数の概念が開発されてきました。それらの概念はいずれも増え続けるコードベースを考慮したモジュラリティを得るために開発されたものです。ローカル変数対グローバル変数、レキシカルスコープ対動的スコープ、多数の名前空間システムなどなど。これはまだ進行中のプロセスです。コンポーネント指向を行うという発展中の考えと、物理的なコンポーネントを組み立てて製品を作るのと同様に、ソフトウェアはコンポーネント化可能だという考えを考慮してください。モジュラリティは、我々が理解しているように、大切なソフトウェア資産です。 従って、オープンクラスとオー
![Rubyのオープンクラス:猿のようにパッチを当てない方法](https://cdn-ak-scissors.b.st-hatena.com/image/square/1fce9e0685be7065dd681aca453f0b8808abf512/height=288;version=1;width=512/https%3A%2F%2Fres.infoq.com%2Farticles%2Fruby-open-classes-monkeypatching%2Fja%2Fheaderimage%2Fimage_monkey_bandage.jpg)