TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #247 · 11.03

Попробовали на работе предметно-ориентированное проектирование (Domain Driven Design). Это такой способ построения архитектуры, когда ты (чаще всего с помощью системы типов и ООП) описываешь физическую суть вещей, которые представлены в твоей программе. Например, если в программе есть объект "Книга", то её нужно снабдить свойствами, которые бывают у книг в реальности: число страниц, автор, язык, тип обложки и т.д. При этом данные свойства должны быть такими, чтобы присвоить им нереалистичные значения было нельзя. Допустим, число страниц не может быть отрицательным (и скорее всего в реальном мире не может быть нулём). При попытке установить отрицательное число страниц программа должна выбросить исключение. А совсем в идеальном случае -- не дать этого сделать программисту на уровне статического анализа кода. Описав все свойства книги, вы снабжаете её операциями, которые над ней можно сделать. Например, из книги можно вырвать страницу, и при этом число страниц уменьшается. Нет такого случая, когда можно вырвать страницу без изменения числа страниц. Вы строго программируете эту зависимость, делаете у книги метод "Вырвать страницу", а он уже уменьшает число. Кстати, свойство "Число страниц" при этом нельзя переназначить в уже созданной книге. Можно только создать книгу, передав в её конструктор (так называется в программировании функция создания объектов) заданное число страниц. Но поменять число страниц можно только специальными методами "Вырвать страницу" и "Вклеить страницу". С помощью этого подхода вы гарантируете, что ваши объекты всегда находятся в валидном состоянии -- то есть таком, которое возможно в реальной жизни с объектом, представленным программой. Плюсы подхода очевидны: меньше число ошибок. Код описывает сам себя, и программист, если не лезет внутрь объекта "Книга", вообще не сможет сделать с книгой ничего недопустимого. Минусы, думаю, тоже понятны: изначально проектировать сложнее, нужно учесть много нюансов, писать тесты. Время разработки изрядно растёт. Изменение требований даётся дороже: например, если каким-то образом в ваш книжный магазин поступят книги со страницами из кевлара, которые невозможно вырвать :) Но первый проект с этим подходом мы сдали хорошо, без багов. Лучше, чем многие предыдущие. #dev

Hashtags

Резултати

Намерени 79 подобни публикации

Търсене: #programming

当前筛选 #programming清除筛选
📓 Real Spencer Woo

@realSpencerWoo · Post #33 · 17.12.2019 г., 08:45

#技术#Programming 📻 来观赏一下用最美丽的古典文学撰写代码的快感:wenyan-lang GitHub | Online IDE 绿蚁新醅酒,红泥小火炉。晚来天欲雪,能饮一杯无?wenyan-lang 让我们借助于中国古典文言文来编写程序,之后我们即可将文言文编译为清晰的 JavaScript 或者 Python 代码,并直接运行。wenyan-lang 的语法很好理解,比如我们声明三个变量:var a=1, b=3, c=5;。用 wenyan-lang 来撰写即为: 吾有三數。曰一。曰三。曰五。名之曰「甲」曰「乙」曰「丙」。 另外,作者还给出了包括快排、斐波那契数列、汉诺塔等等经典问题或者算法的样例,位于 GitHub - wenyan-lang/examples,有兴趣的同学可以前往观摩。编写好的 wenyan-lang 代码,还可以通过编译器自带的 render.js 渲染为一张优美的 svg 图片,高贵。👍 📮 Via channel: @realSpencerWoo

Earth&Climate Tech

@earth_climate_tech · Post #291 · 15.05.2023 г., 16:00

Карта планеты GitHub Посмотрите какой забавный проект - Map Of Github🤩. Каждая точка — это проект GitHub. Размер точки указывает на количество звезд, которые получил проект. Точки соединены в виде графа и образуют кластеры, которые автор объединяет в страны! На карте более 400 000 проектов, сгруппированных по 1100 странам планеты GitHub. Названия стран прикольные - Land of Unity, Hackistan и конечно мои любимые AILandia и Pythonia! В AILandia есть мои любимые штаты - U.S. of Climate, Maplands и Undegrounds, где живут проекты Earth&Climate Tech! Можно нажать на проект, посмотреть его описание и заценить схожие проекты (как на картинке с проектом GemPy). Практического значения может и немного, но визуализация и исполнение просто 🔥! #software#programming

123•••67
ПредишнаСтр. 1 от 7Следваща