Об этом говорится в третьем издании «Effective C ++»:
«Предпочитать функции, не являющиеся членами, и не являющиеся друзьями». Что это означает, что вы должны держать свой класс достаточно маленьким, потому что большие классы, как правило, трудно расширять (они плохо масштабируются)
Вы также можете проверить свой класс на наличие веток. Если ваш класс содержит «if» или «switch'es», существует высокая вероятность того, что ваша классовая ответственность исчезла. Если это так, то рефакторинг и разделение обязанностей на более мелкие части могут привести к меньшим классам.
С наилучшими пожеланиями,
Марчин
@echo off & setlocal :: Supports curl, wget, plink, and nc set SoUID=YOUR UID HERE :: Example: set SoUID=49849 set SoHost=stackoverflow.com set FlairPath=/users/flair/%SoUID%.json set FlairURL=http://%SoHost%%FlairPath% set TempTag=%SoHost%-%SoUID%-%random% set TempFile=%TEMP%\%TempTag%.json set Script=%TEMP%\%TempTag%.script set RawOut=%TEMP%\%TempTag%.out call :Check curl if not "%App%"=="" "%App%" -o "%TempFile%" -s "%FlairURL%" & goto :Next call :Check wget if not "%App%"=="" "%App%" -O "%TempFile%" -q "%FlairURL%" & goto :Next call :Check plink if not "%App%"=="" call :MakeScript & "%App%" -raw %SoHost% -P 80 -batch "%RawOut%" & goto :NextHdr call :Check nc if not "%App%"=="" call :MakeScript & "%App%" %SoHost% 80 "%RawOut%" & goto :NextHdr >&2 echo curl, wget, plink or netcat not found. Downloading plink from PuTTY site. set App=%TEMP%\plink.exe call :Mirror ftp.chiark.greenend.org.uk /users/sgtatham/putty-latest/x86/plink.exe if not exist "%App%" call :Mirror ftp.samurai.com /pub/putty/putty-latest/x86/plink.exe if not exist "%App%" call :Mirror ftp.totem.fix.no /pub/mirrors/putty/putty-latest/x86/plink.exe if not exist "%App%" call :Mirror ftp.ds5.agh.edu.pl /pub/putty/putty-latest/x86/plink.exe if not exist "%App%" goto :NoApp call :MakeScript & "%App%" -raw %SoHost% -P 80 -batch "%RawOut%" & del "%App%" & goto :NextHdr :Mirror if exist "%App%" del "%App%" > "%Script%" echo=lcd "%TEMP%" >>"%Script%" echo=binary >>"%Script%" echo=get %~2 >>"%Script%" echo=bye ftp -s:"%Script%" -A -v -i %~1 > nul 2> nul goto :EOF :NextHdr for /f "usebackq tokens=1,* delims=:" %%a in ("%RawOut%") do ( if [%%a]==[{"id"] set Flair=%%a:%%b & del "%Script%" "%RawOut%" & goto :Next2 ) :NoApp >&2 echo Giving up. & goto :EOF :Next if not exist "%TempFile%" echo Error downloading data. & goto :EOF set /p Flair=&2 echo Something went bad. ) else ( if "%SoName%"=="" ( echo Your reputation is %SoReputation%. ) else ( echo Reputation of %SoName% is %SoReputation%. ) ) goto :EOF :Parse if "%~1"=="" goto :EOF set Line=%~1 shift if /i "%Line:~0,11%"=="reputation:" ( set SoReputation=%Line:~11% goto :Parse ) if /i "%Line:~0,12%"=="displayName:" ( set SoName=%Line:~12% goto :Parse ) goto :Parse :Check set App= for %%e in (%PATHEXT%) do for %%i in (%1%%e) do if NOT "%%~$PATH:i"=="" set App=%%~$PATH:i goto :EOF :MakeScript > "%Script%" echo=GET %FlairPath% HTTP/1.1 >>"%Script%" echo=Host: %SoHost% >>"%Script%" echo=Connection: close >>"%Script%" echo= goto :EOF
В окне командной строки введите:
start iexplore http://stackoverflow.com/users/flair/{your UID here}.html
Есть более подробные данные для пользователей, доступные через (JSON):
http://stackoverflow.com/users/rep/50475/2009-01-01/2009-01-31
Вы можете получить некоторые интересные данные, проанализировав эту строку. Джон Скит использует это для своего трекера репутации .