首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据SOLID编写JavaScript

根据SOLID编写JavaScript
EN

Stack Overflow用户
提问于 2011-01-17 17:54:12
回答 4查看 17.5K关注 0票数 45

有没有人在开发JavaScript时使用过SOLID编程原则(或它的任何部分)?

我刚刚开始阅读它,但似乎找不到任何人在JS中使用它。我发现唯一容易实现/使用的部分是“单一责任原则”。

我正在寻找的是使用这些原则的文章或例子。有没有什么关于为什么不应该使用某些部分的论点?

例如,“接口分离原则”说:“许多特定于客户端的接口比一个通用接口更好的概念。”

但据我所知,JS中没有接口(如果是接口就好了)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-17 00:59:12

看起来Derek Greer正试图通过他在Fresh Brewed Code的SOLID JavaScript系列文章来尝试这一点:

  1. The Single Responsibility Principle
  2. The Open/Closed Principle
  3. The Liskov Substitution Principle
  4. The Interface Segregation Principle
  5. The Dependency Inversion Principle
票数 66
EN

Stack Overflow用户

发布于 2011-01-17 18:06:15

JavaScript有时会因为不如C++、C#和Java而声名狼藉,而事实上,它是一种非常强大的函数式编程语言,也具有面向对象的功能(尽管它并不真正归类为面向对象)

也许许多开发人员看轻它,因为他们中的许多人习惯于看到糟糕的编程实践,从而看到JavaScript中的错误行为。出于某种未知的原因,在客户端草率行事似乎更容易被接受。这是我想要改变的东西。

我相信这些可靠的原则是可靠的。(没有双关语的意思)如果您遵循这些约定,您将不太可能积累由于草率的代码、快捷方式和没有架构而造成的技术债务。您的代码将变得更易维护、更可重用、更模块化、不那么紧密耦合、可伸缩和可扩展。当您的产品被设计而不是不计后果地拼凑在一起时,您还将为展示JavaScript的全部功能做出贡献。

本文档描述了SOLID的基础知识。无论您指的是C++、Java、JavaScript还是任何其他面向对象的语言,都适用相同的规则。

Code Project - The SOLID Object Oriented Programming Principles

以下是有关JavaScript concepts on colourcoding.net的更多信息。

票数 14
EN

Stack Overflow用户

发布于 2015-01-26 07:00:32

此演示文稿: Derick Bailey的SOLID JavaScript In A Wobbly (World Wide Web)演示了如何在开发javascript时使用可靠的编程原则。

他多次明确地解决了javascript中的接口问题。在javascript中,接口在更大程度上是一种约定,因此如何定义它们取决于您。你可以写一个空的对象定义(把它想象成一个抽象的类或者一个接口)。或者,您可以依赖于协议/合同的文档。

在更概念化的层面上,一个对象的方法签名隐含地定义了它的接口,因此在javascript中,你通常可以使用“鸭子类型”,并且仍然坚持使用SOLID。(!)下面是演示文稿中的“接口分离原则”的一个示例,演示了这一点:

代码语言:javascript
复制
// Copyright 2014 Muted Solutions, LLC, and freely distributable and re-usable under the MIT License

// JavaScript has no interface construct ...
// sooooooo..... use inheritance instead? o_O

// Rectangle
// ---------

function Rectangle(){}

Rectangle.prototype.area = function(){
  return this.height * this.width;
};

Rectangle.prototype.setHeight = function(height){
  this.height = height;
};

Rectangle.prototype.setWidth = function(width){
  this.width = width;
};

// Square
// ------

function Square(){}

Square.prototype.area = function(){
  return this.size * this.size;
};

Square.prototype.setSize = function(size){
  this.height = size;
  this.width = size;
};

这段代码和演讲中的所有其他示例代码都发布在GitHub:https://github.com/derickbailey/solid-javascript

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4711851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档