{
    "componentChunkName": "component---src-templates-note-note-js",
    "path": "/notes/SOLID-principles",
    "result": {"data":{"mdx":{"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"One such set of principles is\\xA0\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"SOLID\"), \"\\xA0(first introduced by Robert C. Martin).\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"S\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"SRP\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\", mdx(\"a\", {\n    parentName: \"th\",\n    \"href\": \"/notes/Single-Responsibility-Principle\",\n    \"title\": \"Single Responsibility Principle\"\n  }, \"Single Responsibility Principle\"), \"\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"A class should have only one reason to change.\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"O\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"OCP\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\", mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"/notes/Open-Close-Principle\",\n    \"title\": \"Open Close Principle\"\n  }, \"Open Close Principle\"), \"\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Software entities should be open for extension but closed for modification.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"L\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"LSP\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\", mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"/notes/Liskov-Substitution-Principle\",\n    \"title\": \"Liskov Substitution Principle\"\n  }, \"Liskov Substitution Principle\"), \"\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Subtypes must be substitutable for their base types without affecting the correctness of the program.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"I\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"ISP\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\", mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"/notes/Interface-Segregation-Principle\",\n    \"title\": \"Interface Segregation Principle\"\n  }, \"Interface Segregation Principle\"), \"\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Clients should not be forced to depend on interfaces they do not use.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"D\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"DIP\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\", mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"/notes/Dependency-Inversion-Principle\",\n    \"title\": \"Dependency Inversion Principle\"\n  }, \"Dependency Inversion Principle\"), \"\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"High-level modules should not depend on low-level modules; both should depend on abstractions.\")))), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"Each principle plays a vital role in fostering\\xA0maintainability, scalability, and testability in\\xA0your programs.\")), mdx(\"h2\", null, \"Further reading\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"SOLID in frontend - \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://dev.to/vyan/mastering-solid-principles-in-react-elevating-your-code-quality-2c6h\"\n  }, \"https://dev.to/vyan/mastering-solid-principles-in-react-elevating-your-code-quality-2c6h\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"SOLID in backend - \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://packagemain.tech/p/mastering-solid-principles-with-go\"\n  }, \"https://packagemain.tech/p/mastering-solid-principles-with-go\"))));\n}\n;\nMDXContent.isMDXComponent = true;","inboundReferences":[]}},"pageContext":{"slug":"SOLID-principles","node":{"childMdx":{"slug":"SOLID-principles"}}}},
    "staticQueryHashes": []}