...a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design.https://en.wikipedia.org/wiki/Software_design_pattern
Jag kommer att behandla ett antal mönster
samt ett antal principer
Området är enormt, jag kommer bara ta upp de mest viktiga delarna som rör JavaScript
const list = document.getElementById('list');
for(let singleItem of listOfThings){
let listItem = document.createElement('li');
listItem.innerText = singleItem;
list.appendChild(listItem);
}
function displayList(listOfThings){
const list = document.getElementById('list');
for(let singleItem of listOfThings){
let listItem = document.createElement('li');
listItem.innerText = singleItem;
list.appendChild(listItem);
}
}
Model-View-* (MV*)
Objekt literals kan användas
const View = {}
const Model = {}
Controllern behöver inte användas i vårat fall. MVC behöver inte följas strikt.
const view = {
displayList(listOfThings){
const list = document.getElementById('list');
for(let singleItem of listOfThings){
let listItem = document.createElement('li');
listItem.innerText = singleItem;
list.appendChild(listItem);
}
}
}
Separation of Concerns
Concerns are the different aspects of software functionality. For instance, the "business logic" of software is a concern, and the interface through which a person uses this logic is another.
Den här koden är för busy, gör för mycket
const list = document.getElementById('list');
for(let singleItem of listOfThings){
if(singleItem === "Quokka"){
let listItem = document.createElement('li');
listItem.innerText = singleItem;
list.appendChild(listItem);
}
}
const listOfThings = [];
const filteredList = ["Quokka", "Not Quokka", "Elephant"];
const list = document.getElementById('list');
for(let item of listOfThings){
if(item === "Quokka"){
filteredList.push(item);
}
}
for(let singleItem of filteredList){
let listItem = document.createElement('li');
listItem.innerText = singleItem;
list.appendChild(listItem);
}
Principle of Least Privilege
requires that in a particular abstraction layer of a computing environment, every module (such as a process, a user, or a program, depending on the subject) must be able to access only the information and resources that are necessary for its legitimate purpose
En stor anledning till att vi använder funktioner och objekt
Inkapsling och begränsa tillgång
Har inte koden användning av en vissa variabel ska den inte ens veta att den finns.
Dessa två namn kan inte råka komma åt varandra, eller råka skriva över varandra. De känner inte ens till varandra.
function printName(){
let name = "Jesper";
console.log(name);
}
function printName2(){
let name = "Agneta";
console.log(name);
}
Här har vi en global variabel som skrivs över i var och en av dessa funktioner. Det kräver mer av oss att hålla koll på vilka variabler som är säkra och vilka variabler som faktiskt används. Vi kan också råka skriva över värden.
let name = "Globala Göran";
function printName(){
let name = "Jesper";
console.log(name);
}
function printName2(){
let name = "Agneta";
console.log(name);
}
Eftermiddagen
Individuell presentation av inlämning
Resterande jobbar med övning: 11_separation_of_concerns.md