Separação de Conceitos e Localidade de Comportamento - Um guia imparcial
Você agora é um pedreiro。 Isso mesmo, o melhor da cidade ainda。 um cliente te pediu para construir uma casa;我将把这些作为工具、材料和蒂霍洛斯、土木工程师和植物。 Agora basta você pegar todos esses recursos, Organizá-los and utilizá-utilizá-los de alguma form a ter o produto Final: a casa. Como você vai fazer isso?
解决问题; Quem sabe, se eu trocar um pouquinho a história... 快点!市场上的软件工程师可以准确构建产品。一个 IDE ,一个咖啡厅,一个 mesa,每天 5 分钟。 Até os Juniors estão prontos pra trabalhar como um senior pelo preço de um estagiário!!可以使用 recursos 和 produzir esse 软件吗?
词汇表
- SoC/SdC:关注点分离/Separação de Conceitos
- LoB / LdC:行为局部性 / Localidade de Comportamento
- EdS:软件工程
反对偏袒
嗯,这是教育界最偏爱/精英的主要问题。存在着永远存在的错误。这是 EdS 的一个相关内容,它是一个非常流行的领域,为学校提供了大量的帮助。 Não é à toa que não temos um dia de paz na bolha tech。
在此之前我们声明了该艺术作品,并展示了 SoC 和 LoB 的概念和应用程序。 Não estou colocando nenhum acima do outro。 Existem momentos certos para um, e para o outro。 Ser Engenheiro é também ser crítico e entendor。 Já diziam os sábios:
依赖。
这些词是什么意思?
SoC 和 LoB 的基本原理包括代码库和组织、命名、命名、代码位置等。不用担心,我会详细介绍后续内容。 Trazendo como exemplo 问题 do pedreiro no começo, a forma como os tijolos serão colocados, o tamanho dos cômodos, 等等。
分离
软件的模块化概念是分开的,它是在原始的方面和功能上分开的代码块。你有 X 的声音吗? Então vai pra 意大利面 dos Xs。 Você cuida de Y、vai pra Pasta do Ys 等。
换一种心情,我们或许会问自己,这个程序是否可取,如果可取,为什么?但同时处理这些不同的方面并没有任何好处——恰恰相反!这就是我有时所说的“关注点分离”,即使并非完全可行,但据我所知,这是唯一有效的整理思路的技巧。这就是我所说的“专注于某个方面”:这并不意味着忽略其他方面,而只是公平地对待这样一个事实:从这个方面来看,其他方面是无关紧要的。这既是一心一意,又是多管齐下。——埃兹格·W·迪杰斯特拉
示例可以是 Web 应用程序(普通):提供 3 个不同的技巧:HTML、CSS 和 Javascript。它们之间存在着不同的方面:HTML 是 DOM 元素的声明,CSS 是元素的说明,而 Javascript 则补充了固有元素和常用元素之间的交互。
行为地点
代码库组织模块的本地化与代码库的组合相近,并且与此相关。
“易于维护的主要特性是局部性:局部性是源代码的一个特性,它使程序员只需查看一小部分就能理解源代码。”——理查德·加布里埃尔
理查德·加布里埃尔 (Richard Gabriel) 的起源是这样的:
代码教学的伴奏可以帮助您轻松完成代码教学。
有什么不同吗?
嗯,这是最近使用的 Javascript 和 CSS 框架的实践示例。这就是 React 和 Tailwind 的作用。观察接下来的 arquivo jsx:
function formatName(user) {
return user.firstName + ' ' + user.lastName;
}
const user = {
firstName: 'Josué',
lastName: 'Teodoro'
};
const element = (
<h1 class="px-4 py-2">
Hello, {formatName(user)}!
</h1>
);
使用 React 或 Tailwind,可以将程序逻辑作为基础,这不是一个复杂的过程,而是一个简单的过程。
Agora 想象一下 SoC 的使用情况,这是一个在接下来的几个步骤中分开的格式:
用户.html
<h1 id="title">Hello, </h1>
用户.css
h1 {
padding-left: 1rem;
padding-right: 1rem;
padding-top: 1rem;
padding-bottom: 1rem;
}
用户.js
function formatName(user) {
return user.firstName + ' ' + user.lastName;
}
const user = {
firstName: 'Josué',
lastName: 'Teodoro'
};
var title = document.getElementById("title")
title.onload = sayHello()
function sayHello() {
title.innerText = "Hello, " + formatName(user)
}
用户质量如何?
存在的问题是,我们必须在不涉及应用程序的情况下决定原则。淡水河谷是不存在的,并且是必要的。
费拉门塔斯
Se seu cliente tepediu uma casa de madeira, pra que comprar cimento?
Muitas das ferramentas disponíveis para nos desenvolvedores foram criadas com um Ideal em Mente。 Java 是一个面向对象的程序语言。 Não faria sentidoprogramar Orientado a procedure na mesma língua。
现在,我们需要与 SoC(例如框架 MVC)相结合,继续进行这项工作,这是必要的。
必要性复杂性
您是否可以使用 8 个小按钮,以便使用 1 个大按钮?
EdS é o DRY(不要重复自己)的重要原则结尾,是对信息的重复,以减少摘要和转发,删除冗余。 Um dos embargos do DRY,entretanto,é a Over Abstraction:存在于重复中; dezenas de 接口,单例,抽象工厂等。se espalham pela 代码库,criando 复杂性可能会比较困难。
Uma das Minhas 谈论了Clojure 的“Simple Made Easy - Rich Hickey (2011)” 。 Nessa 与 Hickey 阐述了使用简单软件的必要性(不方便)。建议多多协助,mas em suma:
A cada linha de código、arquivo 等。 que é criado,a complidade da codebase aumenta。 Nós, humanos, não somos máquinas capazes de armamazenar milhares de informações ao mesmo tempo;没有最大 3 coisas e olha lá。发送程序内容的顺序是应用程序中的一个摘要,主要是为了提供一些需要考虑的信息。
嗯,这很简单,但它是一个关于人性的问题。直到现在,人们的精神上都充满了马拉巴主义,这一切都是基于时间上的,是企业自有的。
Tendo isto em mente, eo seu produto Final, responda a si mesmo: Eu e meu time, como seres humanos, temos capacidade para manter esses diversos conceitos assembles em um bloco de codigo na mente?
结论
前面的内容,不存在 uma bala de prata na EdS。 É seu trabalho, como Engenheiro e/ou Desenvolvedor, estabelecer or caminho a ser tomado para chegar no produto Final.基本原理nem toda casa é de cimento,nem toda é de 马德拉。
好的!
文章来源:https://dev.to/j0suetm/separacao-de-conceitos-e-localidade-de-comportamento-um-guia-imparcial-25hh