<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=Podstawy_Refaktoryzacji</id>
	<title>Podstawy Refaktoryzacji - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=Podstawy_Refaktoryzacji"/>
	<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Podstawy_Refaktoryzacji&amp;action=history"/>
	<updated>2026-04-24T08:56:12Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://training-course-material.com/index.php?title=Podstawy_Refaktoryzacji&amp;diff=10240&amp;oldid=prev</id>
		<title>Izabela Szlachta at 22:50, 13 May 2013</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Podstawy_Refaktoryzacji&amp;diff=10240&amp;oldid=prev"/>
		<updated>2013-05-13T22:50:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Cat|Refactoring}}&lt;br /&gt;
{{PHP Links}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;slideshow style=&amp;quot;nobleprog&amp;quot; headingmark=&amp;quot;⌘&amp;quot; incmark=&amp;quot;…&amp;quot; scaled=&amp;quot;true&amp;quot; font=&amp;quot;Trebuchet MS&amp;quot; &amp;gt;&lt;br /&gt;
;title: Podstawy refaktoryzacji&lt;br /&gt;
;author: Leszek Albrzykowski (NobleProg Ltd)&lt;br /&gt;
&amp;lt;/slideshow&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Kody źródłowe dla omawianych wzorców: http://svn.nobleprog.com/training/php/Refactoring/&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Czym jest refaktoryzacja? ⌘==&lt;br /&gt;
&lt;br /&gt;
== Definicja ⌘==&lt;br /&gt;
Zmiany kodu niewpływające na jego funkcjonalność.&lt;br /&gt;
== Definicja - Martin Fowler ⌘==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Martin Fowler&lt;br /&gt;
== Czemu ma służyć? ⌘==&lt;br /&gt;
Jakiego efektu spodziewamy się po refaktoryzacji?&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Efekty mierzalne w krótkim czasie&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Czemu ma służyć? ⌘==&lt;br /&gt;
Jakiego efektu spodziewamy się po refaktoryzacji?&lt;br /&gt;
* Efekty mierzalne w krótkim czasie&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Efekty mierzalne w długim czasie&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Koszt refaktoryzacji ⌘==&lt;br /&gt;
Estymujmy wykres funkcji trzech zmiennych:&lt;br /&gt;
* Koszt&lt;br /&gt;
* Czas&lt;br /&gt;
* Jakość&lt;br /&gt;
dla:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Systemu, którego kod poddany jest refaktoryzacji po jego uruchomieniu&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Koszt refaktoryzacji ⌘==&lt;br /&gt;
Estymujmy wykres funkcji trzech zmiennych:&lt;br /&gt;
* Koszt&lt;br /&gt;
* Czas&lt;br /&gt;
* Jakość&lt;br /&gt;
dla:&lt;br /&gt;
* Systemu, którego kod poddany jest refaktoryzacji po jego uruchomieniu&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Systemu, który zostaje stworzony od nowa&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Kiedy kod podlega refaktoryzacji? ⌘==&lt;br /&gt;
Refaktoryzacja jest procesem ciągłym. Podczas refaktoryzacji nie zmienia się funkcjonalność kodu ale poprawia się jego jakość.&lt;br /&gt;
Estymujmy wykres funkcji, która odzwierciedla zmiany funkcjonalności względem czasu.&lt;br /&gt;
&lt;br /&gt;
== Refaktoryzacja a TDD ⌘==&lt;br /&gt;
Zgodnie z założeniami TDD, następuje po stworzeniu kodu realizującego funkcjonalności &amp;quot;opisane&amp;quot; przez testy jednostkowe. Patrząc na system z perspektywy cyklu życia oprogramowania, refaktoryzacja występuje na etapach rozwoju oraz utrzymaniu (pielęgnacji systemu).&lt;br /&gt;
Poniżej opisujemy kroki wytwarzania produktu zgodnie z TDD:&lt;br /&gt;
* Utworzenie testów jednostkowych na podstawie wymagań użytkownika końcowego (klient, biznes, Product Owner etc.)&lt;br /&gt;
* Stworzenie kodu, którego zadaniem jest spełnienie funkcjonalności opisanej przez testy. Na tym etapie kod realizuje zakładane funkcjonalności jednak jest niskiej jakości i trudny do dalszego rozwoju.&lt;br /&gt;
* Refaktoryzacja utworzonego kodu.&lt;br /&gt;
Cykl ilustruje schemat: [https://www.ibm.com/developerworks/mydeveloperworks/blogs/e4210f90-a515-41c9-a487-8fc7d79d7f61/resource/BLOGS_UPLOADED_IMAGES/image02.png]&lt;br /&gt;
== Refaktoryzacja a DDD ⌘==&lt;br /&gt;
Na &amp;quot;wyższym&amp;quot; poziomie, jednym ze wzorców refaktoryzacji jest przejście z kodu proceduralnego na obiektowy. Tutaj konieczne jest zwrócenię uwagi na model dziedziny (ang. Domain Model):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;An object model of the domain that incorporates both behavior and data.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;At its worst business logic can be very complex. Rules and logic describe many different cases and slants of behavior, and it&amp;#039;s this complexity that objects were designed to work with. A Domain Model creates a web of interconnected objects, where each object represents some meaningful individual, whether as large as a corporation or as small as a single line on an order form.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Martin Fowler&lt;br /&gt;
&lt;br /&gt;
== Refaktoryzacja a zasada KISS ⌘==&lt;br /&gt;
KISS - Mając wiedzę na temat wzorców projektowych i wzorców refaktoryzacji możliwe jest uproszczenie kodu systemu.&lt;br /&gt;
&lt;br /&gt;
== Refaktoryzacja a zasada DRY ⌘==&lt;br /&gt;
DRY - Podobnie jak wyżej, dzięki odpowiedniej wiedzy jesteśmy w stanie zredukować nie tylko powtarzające się linie kodu ale też powtarzające się funkcjonalności realizowane przez różne klasy.&lt;br /&gt;
== Refaktoryzacja a jakość ⌘==&lt;br /&gt;
W zależności od przyjętych kryteriów, jakość kodu jest jednym ze składników ogólnie przyjętych norm jakości produktu.&lt;br /&gt;
Jakość jest jednym z najważniejszych czynników związanych z procesem tworzenia oprogramowania. Aby zrozumieć znaczenie jakości warto zaznaczyć, że np. zarówno w metodyce PRINCE2 (jeden z &amp;#039;&amp;#039;Tematów&amp;#039;&amp;#039;) jak i Scrum (chociażby &amp;#039;&amp;#039;Code reviews&amp;#039;&amp;#039;) zajmuje istotne miejsce.&lt;br /&gt;
&lt;br /&gt;
== Code smell ⌘==&lt;br /&gt;
&amp;#039;&amp;#039;A code smell is a hint that something has gone wrong somewhere in your code.&amp;#039;&amp;#039;&lt;br /&gt;
== Wnioski - Korzyści ⌘==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ułatwienie procesu pielęgnacji i dalszego rozwoju systemu&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Wnioski - Korzyści ⌘==&lt;br /&gt;
* Ułatwienie procesu pielęgnacji i dalszego rozwoju systemu&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Zapobieganie redundancji kodu&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Wnioski - Korzyści ⌘==&lt;br /&gt;
* Ułatwienie procesu pielęgnacji i dalszego rozwoju systemu&lt;br /&gt;
* Zapobieganie redundancji kodu&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ułatwienie podczas dokumentowania systemu&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Wnioski - Korzyści ⌘==&lt;br /&gt;
* Ułatwienie procesu pielęgnacji i dalszego rozwoju systemu&lt;br /&gt;
* Zapobieganie redundancji kodu&lt;br /&gt;
* Ułatwienie możliwości dokumentowania systemu&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Tworzenie kodu zgodnie z przyjętymi standardami, co ułatwia jego zrozumienie&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Wnioski - Korzyści ⌘==&lt;br /&gt;
* Ułatwienie procesu pielęgnacji i dalszego rozwoju systemu&lt;br /&gt;
* Zapobieganie redundancji kodu&lt;br /&gt;
* Ułatwienie możliwości dokumentowania systemu&lt;br /&gt;
* Tworzenie kodu zgodnie z przyjętymi standardami co ułatwia jego zrozumienie&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ułatwienie w utrzymaniu (zachowaniu) odpowiednich warstw systemu&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Na jakie problemy refaktoryzacja nie jest rozwiązaniem ⌘==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Zła architektura systemu&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Na jakie problemy refaktoryzacja nie jest rozwiązaniem ⌘==&lt;br /&gt;
* Zła architektura systemu&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Niezrozumienie wymagań klienta&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Na jakie problemy refaktoryzacja nie jest rozwiązaniem ⌘==&lt;br /&gt;
* Zła architektura systemu&lt;br /&gt;
* Niezrozumienie wymagań klienta&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Brak kompetentnego zespołu&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Na jakie problemy refaktoryzacja nie jest rozwiązaniem ⌘==&lt;br /&gt;
* Zła architektura systemu&lt;br /&gt;
* Niezrozumienie wymagań klienta&lt;br /&gt;
* Brak kompetentnego zespołu&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Brak kompetentnego kierownika projektu (ale też czasami - używając nomenklatury metodyki PRINCE2 - komitetu sterującego a nawet organizacji jeśli mówimy o mikroprzedsiębiorstwach)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Na jakie problemy refaktoryzacja nie jest rozwiązaniem ⌘==&lt;br /&gt;
* Zła architektura systemu&lt;br /&gt;
* Niezrozumienie wymagań klienta&lt;br /&gt;
* Brak kompetentnego zespołu&lt;br /&gt;
* Brak kompetentnego kierownika projektu (ale też czasami - używając nomenklatury metodyki PRINCE2 - komitetu sterującego a nawet organizacji jeśli mówimy o mikroprzedsiębiorstwach)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Brak systematyczności - niekiedy koszt przepisania systemu jest niższy niż jego refaktoryzacji&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Na jakie problemy refaktoryzacja nie jest rozwiązaniem ⌘==&lt;br /&gt;
* Zła architektura systemu&lt;br /&gt;
* Niezrozumienie wymagań klienta&lt;br /&gt;
* Brak kompetentnego zespołu&lt;br /&gt;
* Brak kompetentnego kierownika projektu (ale też czasami - używając nomenklatury metodyki PRINCE2 - komitetu sterującego a nawet organizacji jeśli mówimy o mikroprzedsiębiorstwach)&lt;br /&gt;
* Brak systematyczności - niekiedy koszt przepisania systemu jest niższy niż jego refaktoryzacji&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Nieprawidłowy wybór technologii&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;</summary>
		<author><name>Izabela Szlachta</name></author>
	</entry>
</feed>