{"id":1721842,"user_name":null,"score":0,"text":"Ludzie wybieraj\u0105 FP nie z powodu monad, ale z powodu \u0142atwej kompozycji danych oraz funkcji. To jest has\u0142o, ktorym powiniene\u015b si\u0119 kierowa\u0107 gdy masz jakie\u015b w\u0105tpliwo\u015bci. \n\nMonada to nie jest spos\u00f3b ochrony przed efektami ubocznymi. Monada w du\u017cym stopniu tylko dokumentuje przep\u0142yw danych w Twoim kodzie i ukrywa przed Tob\u0105 nulle - ona nie eliminuje efekt\u00f3w ubocznych.\n\nPraktyka o kt\u00f3rej s\u0142ysza\u0142e\u015b wynika z tego, \u017ce w FP dobrze jest pomy\u015ble\u0107 o izolowaniu efekt\u00f3w, bo one s\u0105 na og\u00f3\u0142 problematyczne, zale\u017cne od kontekstu i mniej przewidywalne, dlatego lepiej jest tak programowa\u0107, aby jak najmniejsza cz\u0119\u015b\u0107 kodu doprowadza\u0142a do efekt\u00f3w.\n\nJak izolowa\u0107? Piszesz kod, kt\u00f3ry zamiast dopuszcza\u0107 si\u0119 efektu produkuje dane, kt\u00f3re opisuj\u0105 co nale\u017cy dalej zrobi\u0107. Osobna partia kodu niech odbiera te dane i wykonuje na nich efekty. Tutaj dodatkowo promowane jest podej\u015bcie, kt\u00f3re  redukuje liczb\u0119 zada\u0144 IO poprzez grupowanie. Wtedy prze\u0142yw sterowania w kodzie jest mniej poszatkowany.","edit_count":3,"is_voted":null,"is_accepted":null,"is_subscribed":null,"user_id":109505,"deleter_name":null,"delete_reason":null,"orderingScore":0,"created_at":"2020-11-07T16:09:11+01:00","updated_at":"2020-11-07T16:13:43+01:00","deleted_at":null,"user":{"id":109505,"name":"pan_krewetek","is_online":false,"allow_sig":1,"allow_count":1,"allow_smilies":0,"posts":245,"visited_at":"2021-07-11T16:57:47.000000Z","created_at":"2020-09-25T12:49:41.000000Z","initials":"PK","is_verified":false,"is_deleted":true,"is_incognito":false,"is_blocked":false,"is_blocked_perm":false,"deleted_at":"2021-07-11T16:57:47.000000Z","photo":null},"html":"<p>Ludzie wybieraj\u0105 FP nie z powodu monad, ale z powodu \u0142atwej kompozycji danych oraz funkcji. To jest has\u0142o, ktorym powiniene\u015b si\u0119 kierowa\u0107 gdy masz jakie\u015b w\u0105tpliwo\u015bci.<\/p>\n<p>Monada to nie jest spos\u00f3b ochrony przed efektami ubocznymi. Monada w du\u017cym stopniu tylko dokumentuje przep\u0142yw danych w Twoim kodzie i ukrywa przed Tob\u0105 nulle - ona nie eliminuje efekt\u00f3w ubocznych.<\/p>\n<p>Praktyka o kt\u00f3rej s\u0142ysza\u0142e\u015b wynika z tego, \u017ce w FP dobrze jest pomy\u015ble\u0107 o izolowaniu efekt\u00f3w, bo one s\u0105 na og\u00f3\u0142 problematyczne, zale\u017cne od kontekstu i mniej przewidywalne, dlatego lepiej jest tak programowa\u0107, aby jak najmniejsza cz\u0119\u015b\u0107 kodu doprowadza\u0142a do efekt\u00f3w.<\/p>\n<p>Jak izolowa\u0107? Piszesz kod, kt\u00f3ry zamiast dopuszcza\u0107 si\u0119 efektu produkuje dane, kt\u00f3re opisuj\u0105 co nale\u017cy dalej zrobi\u0107. Osobna partia kodu niech odbiera te dane i wykonuje na nich efekty. Tutaj dodatkowo promowane jest podej\u015bcie, kt\u00f3re  redukuje liczb\u0119 zada\u0144 IO poprzez grupowanie. Wtedy prze\u0142yw sterowania w kodzie jest mniej poszatkowany.<\/p>\n","url":"http:\/\/static.175.128.202.116.clients.your-server.de\/Forum\/Java\/345817-either_side_effecty?p=1721842#id1721842","is_locked":false,"editor":{"id":109505,"name":"pan_krewetek","is_online":false,"allow_sig":1,"allow_count":1,"allow_smilies":0,"posts":245,"visited_at":"2021-07-11T16:57:47.000000Z","created_at":"2020-09-25T12:49:41.000000Z","initials":"PK","is_verified":false,"is_deleted":true,"is_incognito":false,"is_blocked":false,"is_blocked_perm":false,"deleted_at":"2021-07-11T16:57:47.000000Z","photo":null},"permissions":{"write":false,"delete":false,"update":false,"accept":false},"moderatorPermissions":{"delete":false,"update":false,"accept":false,"merge":false,"sticky":false,"admAccess":false},"comments":[],"comments_count":0,"assets":[],"metadata":"eyJpdiI6IklRanZHV0NQVWE3NU01WnJqSFN3eVE9PSIsInZhbHVlIjoiMDZoZE52V0tkcExNWUhpU3RwNzU1OElFcHl1TWxvaWgvVXNNOUY3anlacVA5OVFxYlVwaTV5M0NzT0ViZHd1UVE2OWp4RmxYSlhnVmkydGtCV3hqQVF4WUp2cXZoRkdSOTVabDByampCWGlMZjhDTllyM3B1c09VWXVQVEZzbGQiLCJtYWMiOiJmYThhY2Y5N2I3ZWY0ZWVlMDEyY2I3ZmNlMmIzYmVjOWY1N2RjMzdjMzMwOGY2MDg1ODkzMjUyNzcxNmNjNTE3IiwidGFnIjoiIn0=","has_review":false,"review_style":"info","parentPostId":null,"childrenFolded":false,"type":"regular","highlighted":false}