<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Software Design on Dmitry Sheiko&#39;s Web Development Blog</title>
    <link>https://dsheiko.com/categories/software-design/</link>
    <description>Recent content in Software Design on Dmitry Sheiko&#39;s Web Development Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 17 Feb 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://dsheiko.com/categories/software-design/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Refactoring Legacy React Code: Moving from OOP to Functional Components</title>
      <link>https://dsheiko.com/weblog/refactoring-legacy-react-code/</link>
      <pubDate>Mon, 17 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://dsheiko.com/weblog/refactoring-legacy-react-code/</guid>
      <description>When React Hooks arrived in 2019, switching to functional components seemed impractical. But as the ecosystem evolved, new techniques emerged. This article explores key strategies for migrating class-based components to modern React patterns—leveraging composition, useImperativeHandle, and function-based customization. Ready to embrace the future of React?</description>
    </item>
    <item>
      <title>Bringing Angular 2&#43; Development Experience into Backbone</title>
      <link>https://dsheiko.com/weblog/second-wind-for-backbone/</link>
      <pubDate>Mon, 10 Oct 2016 00:00:00 +0000</pubDate>
      <guid>https://dsheiko.com/weblog/second-wind-for-backbone/</guid>
      <description>I&amp;rsquo;ve been working with Backbone for years and it suited me pretty well. I do love its conciseness. It gives the desired abstraction and yet leaves you at the full control of your app. When you need to know what exactly is happening in your app behind your code, it&amp;rsquo;s matter of minutes to go though the Backbone annotated sources and figure out the flow. That&amp;rsquo;s something you hardly can afford with other frameworks such as Angular, React, Vue or Amber.</description>
    </item>
    <item>
      <title>Modularizing and Packaging JavaScript for Scalable, High Performance Web Apps</title>
      <link>https://dsheiko.com/weblog/modularizing-and-packaging-javascript-for-scalable-high-performance-web-apps/</link>
      <pubDate>Fri, 07 Nov 2014 00:00:00 +0000</pubDate>
      <guid>https://dsheiko.com/weblog/modularizing-and-packaging-javascript-for-scalable-high-performance-web-apps/</guid>
      <description>Modules in JavaScript With the advance of MV* frameworks you can observe as JavaScript evolves ahead of official specs towards large scale development. It requires even higher level of maintainability and one of the first focuses here is encapsulation and information hiding. We need the code-base to be organized into independent, interchangeable components so that each of them contained code implementing only one aspect of desired functionality. Here comes to help the Module pattern.</description>
    </item>
    <item>
      <title>JavaScript MV* Framework - Making the Right Choice</title>
      <link>https://dsheiko.com/weblog/javascript-mv-framework-making-the-right-choice/</link>
      <pubDate>Fri, 06 Jun 2014 00:00:00 +0000</pubDate>
      <guid>https://dsheiko.com/weblog/javascript-mv-framework-making-the-right-choice/</guid>
      <description>JavaScript frameworks have been proliferating recently with a frightening rate. Just take a look at TodoMVC that provides dozens of MV* framework-specific implementation for a single task. It gives a felling how must be confused a developer making a choice for a framework.&#xA;Some time ago I even ran into a manifesto (http://bitworking.org/news/2014/05/zero_framework_manifesto) against JavaScript frameworks. I do not completely agree with the author, yet he has a point – it’s too many of them, too many of meta-languages to study that you as a web-developer may not need at all.</description>
    </item>
    <item>
      <title>Modular JavaScript in the browser with CommonJS Compiler</title>
      <link>https://dsheiko.com/weblog/modular-javascript-in-the-browser-with-commonjs-compiler/</link>
      <pubDate>Thu, 23 Jan 2014 00:00:00 +0000</pubDate>
      <guid>https://dsheiko.com/weblog/modular-javascript-in-the-browser-with-commonjs-compiler/</guid>
      <description>JavaScript was designed as a script language that is easy to embed in a larger host system and meant to manipulate the objects of the host system. With the advance of HTML5 formerly mostly static web-pages are turning into sophisticated web-applications. Now we expect JavaScript code to be scalable and modular. But how when JavaScript has no built-in facilities to combine distinct scripts?&#xA;Surely, you can insert a script element into the DOM and therefore have outer scripts loaded dynamically.</description>
    </item>
    <item>
      <title>JavaScript Asynchronous Dependency Loader</title>
      <link>https://dsheiko.com/weblog/javascript-asynchronous-dependency-loader/</link>
      <pubDate>Tue, 12 Mar 2013 00:00:00 +0000</pubDate>
      <guid>https://dsheiko.com/weblog/javascript-asynchronous-dependency-loader/</guid>
      <description>Back in 2013, AMD was the standard approach for non-blocking script loading. It works well, but requires every dependency to be wrapped as an AMD module. That&amp;rsquo;s fine for your own code. For third-party libraries, it means patching external code just to satisfy a module format, which isn&amp;rsquo;t a trade-off worth making.&#xA;So I built a small loader that works around this. Non-AMD libraries expose their API via globals, and all we really care about is knowing when they&amp;rsquo;ve finished loading.</description>
    </item>
    <item>
      <title>Harmony with TypeScript</title>
      <link>https://dsheiko.com/weblog/harmony-with-typescript/</link>
      <pubDate>Fri, 16 Nov 2012 00:00:00 +0000</pubDate>
      <guid>https://dsheiko.com/weblog/harmony-with-typescript/</guid>
      <description>On the way to harmony Not so long ago Microsoft announced a new language targeting front-end developers. Everybody&amp;rsquo;s first reaction was &amp;ldquo;Why on Earth?!&amp;rdquo; Is it just Microsoft taking a shot at Google? Is that a trick to promote Visual Studio?&#xA;But anyway, what&amp;rsquo;s wrong with JavaScript? Why is everybody so keen to replace it? For a language designed in just two weeks, JavaScript is freakishly powerful and flexible. It was released in December 1995 and standardized as ECMA-262 in June 1997.</description>
    </item>
    <item>
      <title>Getting started with TypeScript</title>
      <link>https://dsheiko.com/weblog/getting-started-with-typescript/</link>
      <pubDate>Fri, 12 Oct 2012 00:00:00 +0000</pubDate>
      <guid>https://dsheiko.com/weblog/getting-started-with-typescript/</guid>
      <description>After Microsoft released TypeScript I took a look at their examples and found the idea pretty promising. I do love JavaScript. However, it has its bad parts. JavaScript doesn’t provide any built-in facilities to declare interfaces or object abstraction. There is no explicit way to have type annotations and type checking. Well, even class-based OOP is not a part of the language. Flexibility of JavaScript is incredible. So, there are tons of libraries meant to work-around these inconveniences.</description>
    </item>
    <item>
      <title>Scalable JavaScript Application</title>
      <link>https://dsheiko.com/weblog/js-application-design/</link>
      <pubDate>Thu, 31 May 2012 00:00:00 +0000</pubDate>
      <guid>https://dsheiko.com/weblog/js-application-design/</guid>
      <description>Make of JavaScript the language you need Any diligent developer is constantly working on improving his or her code. There are plenty of books telling how to make your code better. However most of them use the language of class-based OOP. Reader must have enough of experience to reflect those classical design patterns on JavaScript. Thus, many and many developers give up on the language before mastering its true power.</description>
    </item>
    <item>
      <title>Pseudo-classical Inheritance in JavaScript for Modules</title>
      <link>https://dsheiko.com/weblog/prototypal-inheritance-in-javascript-for-modules/</link>
      <pubDate>Thu, 24 May 2012 00:00:00 +0000</pubDate>
      <guid>https://dsheiko.com/weblog/prototypal-inheritance-in-javascript-for-modules/</guid>
      <description>The classical design of object in JavaScript can be expressed like:&#xA;var ConstructorFunc = function () { var _privateMember = &amp;#34;private member&amp;#34;; } ConstructorFunc.prototype.publicMember = &amp;#34;private member&amp;#34;; ConstructorFunc.prototype.privilegedMethod = function () { return _privateMember; }; Pretty clumsy, isn&amp;rsquo;t it? I prefer the module design propagated so indefatigably by Addy Osmani (http://addyosmani.com/largescalejavascript/):&#xA;var Module = function () { // Constructor&amp;#39;s job var _privateMember = &amp;#34;private member&amp;#34;; return { publicMember : &amp;#34;private member&amp;#34;, privilegedMethod : function () { return _privateMember; } } } It looks much nicer to me.</description>
    </item>
    <item>
      <title>Design by Contract and JS</title>
      <link>https://dsheiko.com/weblog/design-by-contract-and-js/</link>
      <pubDate>Thu, 22 Dec 2011 00:00:00 +0000</pubDate>
      <guid>https://dsheiko.com/weblog/design-by-contract-and-js/</guid>
      <description>Related articles: Prototypal Inheritance in JavaScript for Modules and Scalable JavaScript Application Design&#xA;Design by contract (DbC) is an approach in application design, which originally came from Eiffel, but now widely used on different languages (particularly in Java). In real world one party (supplier) makes an offer for an agreement (business contract) and another one (client) accepts. The same way can be described relations between objects in software engineering. As a declared agreement is accepted by the client object, the last one is expected to keep its rules.</description>
    </item>
    <item>
      <title>Beyond the Basics: Enhancing Drupal’s MVC Architecture</title>
      <link>https://dsheiko.com/weblog/extending-mvc-on-drupal/</link>
      <pubDate>Wed, 10 Nov 2010 00:00:00 +0000</pubDate>
      <guid>https://dsheiko.com/weblog/extending-mvc-on-drupal/</guid>
      <description>Related articles: Drupal Meets MVC: A Smarter Way to Build Websites and When Great Ideas Meet Bad Code: A Look at Drupal&#xA;I’ve already described an approach of using MVC in Drupal . It wasn’t bad for the beginning I hope. Though in real life you face requirements which hardly can be fulfilled with such a simplicity. In, more or less, complex application you ain’t going to be satisfied by the only controller (page controller) to serve the whole bunch of components presented on the page.</description>
    </item>
    <item>
      <title>MVC on command line</title>
      <link>https://dsheiko.com/weblog/mvc-on-command-line/</link>
      <pubDate>Tue, 15 Jun 2010 00:00:00 +0000</pubDate>
      <guid>https://dsheiko.com/weblog/mvc-on-command-line/</guid>
      <description>If you work with Zend Framework, you likely tried ZF Console (Zend_Tool on command line). But have you tried to extend it? Why? To have common interface for all your Cli-scripts related to ZF-base project. How do you find the idea to program Cli-scripts in MVC? Zend Framework provides us with the tool to do it.&#xA;First, you have to make ZF shell script zf.sh and assisting zf.php globally accessible. Wherever you have located them, just make a symlink on zf.</description>
    </item>
    <item>
      <title>Feature Driven Development for Web Developers</title>
      <link>https://dsheiko.com/weblog/feature-driven-development-for-web-developers/</link>
      <pubDate>Mon, 22 Dec 2008 00:00:00 +0000</pubDate>
      <guid>https://dsheiko.com/weblog/feature-driven-development-for-web-developers/</guid>
      <description>Ten years ago, most web projects were static and development was relatively straightforward. That&amp;rsquo;s changed. The gap between web apps and desktop software has largely closed, functional complexity keeps growing, and the demands on teams have shifted accordingly. Projects run longer, involve more contributors, and carry backlogs that evolve well into development. Goals and stories shift, tasks change shape, and time-based estimates become unreliable. You could try fitting a heavyweight process like Rational Unified Process (RUP) or Process Mentor to this kind of work.</description>
    </item>
    <item>
      <title>Aspect-oriented Software Development and PHP</title>
      <link>https://dsheiko.com/weblog/aspect-oriented-software-development-and-php/</link>
      <pubDate>Wed, 08 Nov 2006 00:00:00 +0000</pubDate>
      <guid>https://dsheiko.com/weblog/aspect-oriented-software-development-and-php/</guid>
      <description>Introduction Object oriented approach has been popular for a number of years. Its advantages can hardly be visible within short-term projects, yet any major long-term one simply cannot do without it. Object-oriented programming languages provide the tools necessary to present business logic in a demonstrable form. Today UML Class diagram (http://en.wikipedia.org/wiki/Unified_Modeling_Language) does suggest itself even on the stage of developing the system logic.&#xA;Demonstrable business logic makes it easier for new participants to join in, helps to save time for those developers that come back into the project at later stages.</description>
    </item>
  </channel>
</rss>
