[5분만에 책 한권 읽기] C# 코딩의 기술 기본편 - 가와마타 아키라

|


C# 코딩의 기술 - 기본편
국내도서
저자 : 가와마타 아키라 / 김완섭역
출판 : 길벗 2015.09.23
상세보기





C# 코딩의 기술 기본편 - 가와마타 아키라




+C#의 입문자들이 읽기에 좋은 책이다. 기존의 C#의 경력자들도 읽으면 애매했던 부분들을 잘 비교 정리해줘서 한번 쯤 읽어두면 좋은거 같다. 악마와 천사의 캐릭터가 각각 하지 말아야하는 방법과 최선의 방법을 제시해서 물 흐르듯이 읽기 좋다. 보통 악마가 하는 말들은 권장할만한 것이 아니거나 하지 말아야 할 것 들이지만 개발을 하다보면 자주 그런 유혹에 넘어 갈 때가 있다. 



[핵심적인 내용들]


1.C#에서의 var를 기피하는 이유가 '형을 명시하지 않으면 변수는 어떤 것이든 저장할 수 있는 마술 상자다'라는 생각때문이다. 하지만 C#에서 var는 마술상자가 아니다.  '형을 명시하지 않지만 추론으로 확정한다. 변수에는 지정된 형만 저장할 수 있다'.  var list = new List<string>(); 이렇게 되면 list는 List<string>형으로 지정이된다. 이렇게 사용을 하면 코드자체를 줄일 수가 있기 때문에 가독성이 좋다. 위에처럼 List<string>형태면 비교적 간단한 타입으로 효과는 크지 않지만 긴 네임스페이스를 사용하는 타입에서는 가독성이 좋아진다.


2.Task 클래스?


3.변수에 람다식을 사용하면 캡처돼서 수명이 연장된다. 람다식에서 배열을 사용할 때 기본자료형을 사용하지 않고 열거 객체를 사용한다. 열거객체는 데이터 자체를 저장하는 게 아니라 필요한 데이터를 반복해서 가져오는 방법을 알고 있는것이다.


  -기존 :  int[] array = Enumerable.Range(0,Max).ToArray(); 

  -개선 :  IEnumerable<int> enumAll = Enumerable.Range(0,max)



4.배열의 각각의 값을 형변환을 해서 처리할 필요가 있을때 강제형변환을 사용하지 않고 LINQ의 OfType메서드를 이용해서 지정된 형의 데이터만 추출해서 형변환 없이 사용이 가능하다.


 -기존 :  foreach(var item in array); if(item is TargetType); ((TargetType)item).Speak();

 -개선 : foreach(var item in array.OfType<TargetType>);item.speak();



5.어떠한 경우에도 파일을 닫아야 한다면 IDisposable 인터페이스와 using문을 사용해서 IDisposable 인터페이스를 구현해서 using구문과 함께 사용하면 어디서 예외가 발생하든지 close()를 실행할 수 있다.


6.Hashtable 클래스는 호환을 위해서 남아있긴 하지만 오래된 클래스이다. C#의 API 세트에 포함되어 있지 않다. 


7.시리얼라이즈 : 불특정 다수의 시스템에 배포하지 않아도 되고 효울이 중요하다면 JSON을 사용하면 데이터 크기도 줄어들고 좋다.


8.예외는 무거운 처리라서 발생하지 않도록 하는것이 기본이다.


9.불변클래스는 프로그램의 복잡성을 줄여줄 수 있기 때문에 좋다.


10.VS에서 Productivity Power Tools를 설치하면 코드작성에 편리한 기능을 사용할 수 있다.

And

[5분만에 책 한권 읽기] 훌륭한 프로그래머 되는법 ( Becomming a Better Programmer ) - Pete Goodliffe

|
훌륭한 프로그래머 되는 법
국내도서
저자 : 피트 구들리프 / 최원재,강전희,안재덕,남윤화역
출판 : 한빛미디어 2015.12.10
상세보기




훌륭한 프로그래머 되는법 ( Becomming a Better Programmer ) - Pete Goodliffe



+이책은 한글로 번역한 "훌륭한 프로그래머가 되는법 "가 되기보다는 원서 그대로 "더 나은 프로그래머가 되는법"이 더 맞는 해석같다. 책에서는 코드베이스를 개선하는 방법부터 협업,자기개발등을 다룬다. 모두다 좋은 말들이지만 이 역시 실천하지 않으면 전혀 소용이 없다. 프로그래머에 관련된 여러책들을 읽다보면 저자가 주장하고 제시하는 내용들은 비슷하다. 자기 개발서 처럼 좋은 이야기들로 가득차지만 결국은 실천의 문제다.


아래의 내용들은 책에서 핵심적인 내용만 간추렸다. 책을 읽을 시간이 없거나 책에 어떤내용이 있었는지 확인하는 용도로 다시 읽어보면 도움이 될것이다.




[핵심적인 내용]


1.어떤 코딩 환경에서든 단지 작동하는 것처럼 보이는 코딩은 거부해야 한다. 프로그래머는 올바르게 작동하는 훌륭한 코드를 짜도록 노력해야한다.


2.글을 쓰듯이 코드를 작성하라. 코드를 장, 문단, 문장 단위로 자르라.


3. 관용적 이름을 선호하자. 언어에서 주로 쓰이는 대문자화 규약을 따르라


4.중복 코드는 특히 치명적이다. 하나의 버그를 고쳐도 다른 곳에 32개의 똑같은 작은 버그들이 남아 있는다.


5.코드 일부를 복사하지 말자. 공통 함수에 모두 넣자. 다른 부분은 매개 변수를 사용하라


6.주석으로 코드제거한것을 삭제하라


7.원자적 커밋을 수행하라. 한꺼번에 많은 범위를 커밋하기보다는, 작고 빈번하게 극미한 체크인을 생성한다. 


8.명명규칙,코딩관례,유닛테스트,페어 프로그래밍,코드 리뷰

  -명명규칙: 프로젝트나 팀에서 사용하는 변수,클래스,함수등의 이름에 규칙을 정하라

  -코딩관례: 일관된 규칙을 만들어서 준수하라

  -유닛테스트: 유닛테스트를 하라

  -페어 프로그래밍: 두명이 하나의 프로그램을 작성하는 기술로 생산성을 향상시킬수 있다.

  -코드리뷰:소스를 검증하라


9.XP(eXtreme Programming)의 원칙 YAGNI, Don't do anything if You Aren't Going to Need it : 필요하지 않으면 아무것도 하지말라. 필요해질 때까지 설계상의 결정을 미루라. 요구사항을 파악하기 전까지 구조 설계를 하지말라. 추측하지 말라.   =>철칙을 안지키면 야근한다


10.기술부채(technical debt) 소프트웨어를 빠르게 출시하기 위한 결정(편법이나 우회하기 등으로 출시 시간을 단축하기 위한 일련의 결정들)을 내리는 것은 부채를 지는것과 같다. 나중에 업데이트 해야한다. 때로는 잘 다룬다면 강력한 무기가 될 수가 있다. 


11.콘웨이 법칙 : 코드 구조는 개발팀의 구조를 따라감. 


12.코드 재사용의 방법


     -복사 붙여넣기를 하지 최대한 자제하고 공통함수와 공통 라이브러리에 넣는다.

     -웹에서 복사할때 충분한 테스트와 검토가 필요하다. 

     -좋은 라이브러리를 구매하라.


13.자신이 인지하고 있지 못하는 알지 못하는것을 탐구하라. 새로운 도메인에 대해서도 관심을 갖고 책을 읽자


14.간단하게 설명할 수 없다면, 충분히 잘 이해하지 못했다는 증거이다 - 아인슈타인


15.안전지대(삶이 편한하고 일정은 짧으며 예측 가능한 수준인 상황), 안전지대는 유해한 영역이다. 편한 삶이란 학습하지 않고, 더이상 발전이 없다는 것이다. 안전지대 있다는것은 정체되었다는 것이다. 안전지대는 퇴보로 가는 지름길이다.


16.모든 언어에서 최고로 숙련되기란 어렵다. 가능성이 보이는 두 개 정도 언어에 재능을 쏟으라


17.수많은 반복을 거쳐야 하는 작업을 자동화해서 시간을 줄여라.


18.주요 선언문에 대해서 알아두고 자신만의 의견을 가져라



[부록내용중에서...]


1.MOOC를 활용해서 지식을 습득해라. 과제가 부여되고 토론도 이루어지므로 깊은 개념이나 이론을 공부하는데 큰 도움이 된다.


2.한달에 5천원 정도면 리눅스 서버를 클라우드에 구축할 수 있다. www.digitalocean.com


3.일일 커밋 


4.TIL (Today I Learned) 


5.Codewars사이트에서 문제를 풀고 다른사람의 답과 비교해서 정리한다.

    

And

[5분만에 책 한권 읽기] 나는 프로그래머다 #1

|
팟캐스트 나는 프로그래머다
국내도서
저자 : 임백준,정도현,김호광
출판 : 한빛미디어 2015.11.01
상세보기


팟캐스트 나는 프로그래머다




아이튠즈에서 방송되는 팟케스트중에서 개발자를 위한 방송이다.


세명의 개발자가 프로그래머에 관련된 다양한 주제로 이야기가 진행되는데 이것은 그 팟케스트 중에서

핵심 알맹이만 정리했다. 편하게 남의 이야기를 듣는다는 기분으로 읽을수가 있다.

보통 개발을 하게되면 자신이 개발하고 있는 도메인에 뭍혀서 다른것은 잘 보지않는다. 이책을 통해서

다양한 개발자들이 어떻게 개발하며 어떤생각들을 하고 있는지 옅들을 수가 있다.


[책속에서 밑줄칠 만한 내용들 또는 알지 못했던 사실들...]


1. 전자정부프레임워크는 129개 정도의 공통기술서비스(공통코드,공통인증,공통 보안 등)로 구성이 되어 있는데 이것에 단순히 정부에서 만든것이 아니고, 대형 SI 업체들이 일종의 컨소시엄을 만들어서 자기들끼리 편한 표준을 만든것. 이것으로 인해서 개발과정을 지극히 단순한 노동으로 전락 시켰다. 요즘에는 공공기관을 제외하면 해당프레임워크를 사용하는 회사가 거의 없음.


2.자바의 봄날은 갔다.  아직 배울 가치가 많고 잘하면 이득을 취할수 있는 여지가 많지만 천천히 또는 급격하게 내리막길을 가는 일만 남았다.


3.구글은 안드로이드를 개발하면서 자바 개발자들과의 친화성을 극대화 하기 위해서 자바와 꼭 닮은 자바 변종을 만들었다. JVM과 안드로이드에서 사용하는 DVM(달빅)은 개념만 유사할뿐 호환성이 없는 별도의 가상기계.


4.GO언어는 시스템 프로그램용으로 만들어진 언어이나 범용으로도 사용이 가능해서 공개한 프로젝트이다.

  여러 장단점이 있지만 가장 큰 장점은 문법적으로 쓰기가 편하기 때문에 생산성이 엄청나다.


5.임작가님이 자바 프로젝트를 진행할때 팀원들이게 주문하는 3가지의 내용


   -모든 객체는 불변이어야 한다. 여기엔 예외가 없다. 

    객체의 값을 바꾸고 싶으면 빌드 패턴을 이용해서 새로운 객체를 만들어라


   -모든 메서드는 어떤 값을 리턴해야 한다. void 메서드는 허용되지 않는다.


   -모든 메서드는 참조 투명성을 보장하도록 최대한 부수효과가 없는 방식으로 작성되어야 한다. 

    부수효과가 있는 메서드는 어떤 동작을 수행하는지, 어떤 부수효과를 발생시키는지를 설명하는 주석필요

    코드를 그렇게 작성할 수박에 없었음을 다른 사람에게 납득시켜야한다.


6.MS-DOS에서 윈도우 95로 개발자들이 넘어갈 때 많은 개발자가 도태되었다. 새로운 기술을 공부하지 않고 과거의 기술이 최고인줄 알고 노하우를 숨기고 공유하지 않으려 한다면 필시 도태가 된다.

 

7.젠킨스 + GItLab을 통한 개발 프로세스


8. 클라우드 시스템 서비스 종류

  IaaS(Infrastructure as as Service) : OS레벨의 서비스와 로드벨런서와 같은 네트워크를 제공 : 

                                             가상머신,Servers,storage...

  PaaS(Platform as a Service) : 런터임 실행환경, 데이터베이스, 웹 서버와 같은 애플리케이션 실행 계층을 제공 

  Saas(Software as a Service) :  소프트웨어 서비스 자체를 서비스로 제공 : 이메일,게임,가상 데스크톱 등..


9.클라우드는 DDOS 공격을 받으면 트래픽 요금이 엄청나게 부과되는 경우도 발생한다.


10.AWS의  S3(Simple Storige Service)는 VM 서비스인 EC2와 함께 AWS의 대표적인 서비스이다. 드롭박스가 S3를 이용해서 개발되었다.데이터가 여러 시설과 디바이스에 중복 저장됨으로써 99.999999999%의 내구성이 보장된다.


11.윈도우는 도스 시절을 거치면서 16비트 라이브러리인 Win16, 이것을 확장해 32비트를 지원하는 Win32 라이브러리가 있는데 6만 5천개정도 됨, 이것을 랩핑한 라이브러리는 MFC


12.클라우드는 망할 확률이 높은 자의 안전장치, 빈자를 위한 데이터 센터.

And
prev | 1 | ··· | 7 | 8 | 9 | 10 | 11 | 12 | 13 | ··· | 47 | next