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

TGINSIGHT SIMILAR POSTS

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

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

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

Hashtags

Резултати

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

Търсене: #smarttigerd

当前筛选 #smarttigerd清除筛选
3D-Hmangaupload

@hmangafor3duploadtest · Post #21025 · 15.01.2025 г., 15:52

#S_SUMMER_BREAK_1-3 #s_Turn" #s_Very_Merry_Christmas#s_Very_Merry_Christmas" #s_Villa" #s" #Sabotage_1#Sabotage_1-4 #Sabotage_2#Sabotage_3#Sabotage_4#Sail#Saisyuusyoku#sakai08#Santa_Swap#Satisfying_Needs_1-6 #saw2008#SD大學陪讀生林婉晴_1-3 #Secret_of_Beauty_03#Secret_of_Beauty_1_-_Stone_Lady #Secret_Of_Beauty_2_-_Orc_rituals #SedesDis#Seduction_the_Beast#Serge3d#Serge3dx#Serge3DX#ses21#Shassai#Sherry#Shin_Sangoku_Musou#Shiun#Shiun红忍的修行01-07 #Shota_Kyoudai_no_Itazura#ShowTime#silvercastle#Singer#Sister#Skin_Exprience#Skinsuit_Possession#Sky_Cat#Skyla_-_Wrong_Turn #SLASH#Slave_Plan_01-不知火舞は惨めではない #Slave_Plan_02-女性ファイター春麗をキャプチャ #Sleeping_Beauty_5#Sleeping_Beauty_6#Slumber_party#smallflyingrat#smallflyingrat(小飛鼠) #Smarttigerd#Sneaky_Bastard#Son_of_beach#Sorceress_Lori_-_Beyond_Death_+_Sold_To_Demons #Sound_Garden_1-6 #Space_Pirate#speaKCiao#Spellbound#Spider-Man #SR_3DART#Stacy_001#Stacy_002#Stan#stan13#Steri-Nurse_-_Come_Join_Us #Steri-Nurse_-_The_Lesson #Stopwatch_时间停止器#Strangers_in_a_StrangeLand_1-3 #Succubus_Trap#Sunny_Wheel#Supafly#SupaFly#sycosistg#System_Failure#t_Get_Caught_Again_+_Knight_Elayne_-_Game_of_Mischief" #TachibanaKizen#taka4106#Tanya_&_The_Succubus_1-3 #Telsis#Tento#TERESA_-_CAN_NOT_GO_BACK #The_Amazing_Elinor#The_Audition1-2\xa0\xa0 #The_Bang_1-2 #The_Boy_and_his_Dog#The_Call#The_Cloud_Temple_&_Redux #The_Crafty_Maid#The_Evolution_of_Hermine_Granger#The_exchange_student#The_Fall_Of_The_Swan_vol.1\xa0\xa0 #The_Fall_Of_The_Swan_vol.2_-_The_nightmare_of_a_ballet_dancer #The_Final#The_First_Prize#The_Game_+_Luna #The_Gift#The_Grandma_01-03 #The_healer#The_Holiday#The_Meeting#The_Obsession#The_Park_1#the_pw#The_Sacrifice_Ch.1-16_Completed\xa0\xa0 #The_Scandalous_Proposal#The_Sex_Toy#The_Special_Offer#The_Tan_1-8 #The_Trip_to_Egypt_1-3 #The_Trophy_Wife#The_Ultimate_Beast_Hunt#The_Ultimate_Goblin_Gangbang#The_Ultimate_Goblin_Gangbang_2#The_Ultimate_Slave_Training#The_Violinist#The_visit#TheMaskedMoron#Thief_Ezri_-_Don #Tia_001#Tia_002#Tifa#Tifa_Rape_by_Zombies#Tifa_vs_Fly#Tifa_vs_Roach#tifalover#Tim#TiMOP#tin_a_fool_TikTok_MYLF" #Tira#TKXS#Together_In_The_Army_Now_1#Together_In_The_Army_Now_2#Tomb_Raider_-_The_Death_Mask_of #TOP1女销售经理的堕落01#TOP1女销售经理的堕落02#TOP1女销售经理的堕落03#Tough_luck#Trade_Winds#Training_Tsunade#Trap_Video#Trapped_With_The_Orc#Trick_or_Treat_1_&_2_-_Jack_O #Trick_or_Treat_3_Part1_&_Part2 #Trick_or_Treat_4_-_Part_3 #Trick_or_Treat_4_-_Part_4 #Trick_or_Treat_4_-_Part_5 #Trick_or_Treat_4_Part1#Trick_or_Treat_4_Part2#Trick_or_Treat_5#Trick_or_Treat+Timmy_strikes_back\xa0\xa01-5 #TrophyMom_1-4 #trust2018#Tslove#uglive_4k#Uiafox#UIAFOX#Ultra_Lady_tai_Hae_Seijin#Ultraman#Ultrarin#uncensored#Underworld#uuG#V-Kris #V1z3t4#valentine_1-3 #Valentine_Episode_1#Valentine_Episode_1-2 #Valentine_Episode_2#Vampire_Hunters#Vchan

Hashtags

#s_summer_break_1#s_turn#s_very_merry_christmas#s_villa#s#sabotage_1#sabotage_2#sabotage_3#sabotage_4#sail#saisyuusyoku#sakai08#santa_swap#satisfying_needs_1#saw2008#sd大學陪讀生林婉晴_1#secret_of_beauty_03#secret_of_beauty_1_#secret_of_beauty_2_#sedesdis#seduction_the_beast#serge3d#serge3dx#ses21#shassai#sherry#shin_sangoku_musou#shiun#shiun红忍的修行01#shota_kyoudai_no_itazura#showtime#silvercastle#singer#sister#skin_exprience#skinsuit_possession#sky_cat#skyla_#slash#slave_plan_01#slave_plan_02#sleeping_beauty_5#sleeping_beauty_6#slumber_party#smallflyingrat#smarttigerd#sneaky_bastard#son_of_beach#sorceress_lori_#sound_garden_1#space_pirate#speakciao#spellbound#spider#sr_3dart#stacy_001#stacy_002#stan#stan13#steri#stopwatch_时间停止器#strangers_in_a_strangeland_1#succubus_trap#sunny_wheel#supafly#sycosistg#system_failure#t_get_caught_again_#tachibanakizen#taka4106#tanya_#telsis#tento#teresa_#the_amazing_elinor#the_audition1#the_bang_1#the_boy_and_his_dog#the_call#the_cloud_temple_#the_crafty_maid#the_evolution_of_hermine_granger#the_exchange_student#the_fall_of_the_swan_vol#the_final#the_first_prize#the_game_#the_gift#the_grandma_01#the_healer#the_holiday#the_meeting#the_obsession#the_park_1#the_pw#the_sacrifice_ch#the_scandalous_proposal#the_sex_toy#the_special_offer#the_tan_1#the_trip_to_egypt_1#the_trophy_wife#the_ultimate_beast_hunt#the_ultimate_goblin_gangbang#the_ultimate_goblin_gangbang_2#the_ultimate_slave_training#the_violinist#the_visit#themaskedmoron#thief_ezri_#tia_001#tia_002#tifa#tifa_rape_by_zombies#tifa_vs_fly#tifa_vs_roach#tifalover#tim#timop#tin_a_fool_tiktok_mylf#tira#tkxs#together_in_the_army_now_1#together_in_the_army_now_2#tomb_raider_#top1女销售经理的堕落01#top1女销售经理的堕落02#top1女销售经理的堕落03#tough_luck#trade_winds#training_tsunade#trap_video#trapped_with_the_orc#trick_or_treat_1_#trick_or_treat_3_part1_#trick_or_treat_4_#trick_or_treat_4_part1#trick_or_treat_4_part2#trick_or_treat_5#trick_or_treat#trophymom_1#trust2018#tslove#uglive_4k#uiafox#ultra_lady_tai_hae_seijin#ultraman#ultrarin#uncensored#underworld#uug#v#v1z3t4#valentine_1#valentine_episode_1#valentine_episode_2#vampire_hunters#vchan