- 1
String methodName = (new Exception()).getStackTrace()[1].getMethodName();
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+85
String methodName = (new Exception()).getStackTrace()[1].getMethodName();
Вот как надо получать имя метода. Это вам не __func__ ...
+83
try
{
nIndex = Integer.parseInt(sRowIndex.trim());
}
catch(NumberFormatException e)
{
//异常处理
nIndex = -2;
}
if(nIndex < 0) return;
Китайцы продолжают отжигать.
+171
// Файл settings.cpp
#define SETTINGS_READ
#include "Settings.h"
#undef SETTINGS_READ
#include "Settings.h"
#endif
// ----------------------------------
// Файл settings.h
#ifdef SETTINGS_READ
#define _XML_OPTION_VALUE(name,value) if (XML.FindElem(_CRT_WIDE(#name))) {/*XML.IntoElem();*/ XML.GetData(value); /*ShowVar(value);ShowVar(_CRT_WIDE(#name));*/ /* XML.OutOfElem();*/}
#define _XML_OPTION_ATTR(name,value) XML.GetAttrib(_CRT_WIDE(#name),value)
#define XML_NODE_START(name,value) if (XML.FindElem(_CRT_WIDE(#name))) {XML.IntoElem();
#define XML_NODE_START_WITHATTRIB(name,value) if (XML.FindElem(_CRT_WIDE(#name))) {
#define XML_NODE_STARTS(name,value) if (XML.FindElem(name)) {
#define XML_NODE_START_VALUE(name,value) if (XML.FindElem(_CRT_WIDE(#name))) { XML.GetData(value);XML.IntoElem();
#define XML_NODE_START_VALUE_WITHATTRIB(name,value) if (XML.FindElem(_CRT_WIDE(#name))) { XML.GetData(value);
#define XML_NODE_END() \
XML.OutOfElem(); \
}
#define XML_OPTION_VALUE(name) _XML_OPTION_VALUE(name,name)
#define XML_OPTION_MEMBER_VALUE(prefix, name) _XML_OPTION_VALUE(name, prefix##.name)
#define XML_OPTION_ATTR(name) _XML_OPTION_ATTR(name,name)
#define XML_OPTION_MEMBER_ATTR(prefix, name) _XML_OPTION_ATTR(name, prefix##.name)
#define COLOR_TO_PINT(c) (*(int*)&##c)
#else
// SAVING MACROSES
#define _XML_OPTION_VALUE(name,value) XML.AddElem(_CRT_WIDE(#name),value) ; /*XML.OutOfElem();*/
#define _XML_OPTION_ATTR(name,value) XML.SetAttrib(_CRT_WIDE(#name),value)
#define XML_NODE_START(name,value) XML.AddElem(_CRT_WIDE(#name)); {XML.IntoElem();
// ( еще десяток макросов)
#endif
#ifdef SETTINGS_READ
bool CSettings::MacroLoadSettings(CMyXml &XML)
{
#else
bool CSettings::MacroSaveSettings(CMyXml &XML)
{
#endif
TCHAR szFont[1024];
CString Font;
XML_NODE_START(Settings);
XML_NODE_START(General);
XML_OPTION_MEMBER_VALUE(Settings,Language);
XML_OPTION_VALUE(ExplorerContextMenu);
#ifndef SETTINGS_READ
HotkeysStr= Settings.Hotkeys.toString();
FontToString(&LogoSettings.Font,Font);
#endif
XML_OPTION_VALUE(HotkeysStr);
#ifdef SETTINGS_READ
Settings.Hotkeys.DeSerialize(HotkeysStr);
StringToFont(Font, &LogoSettings.Font);
#endif
#endif
XML_NODE_END();
// ..............................................
XML_NODE_END(); // end of settings
XML_NODE_END(); //
return true;
}
Фееричный пример повторного использования кода с помощью директив препроцессора.
Создано с целью совместить в одном месте чтение/запись настроек программы (с риском что-нибудь забыть) из XML файла.
+74
public void removeFromBase()
throws SQLException{
for(ServiceInstance serv: getServiceInstances())
serv.removeFromBase();
for(Pay pay: pays)
pay.removeFromBase();
String query;
PreparedStatement ps = null;
Connection connection = null;
try{
connection = TIDatasource.getInstance().getConnection();
query = "DELETE FROM orders WHERE id=?";
ps = connection.prepareStatement(query);
ps.setLong(1, getId());
int res = ps.executeUpdate();
if(res != 1)
throw new SQLException("Unexpected number of orders have deleted: " + res);
}catch(SQLException sqlex){
throw new SQLException("Can't remove order from base because of error: " + sqlex);
}finally{
ps.close();
connection.close();
}
}
PRIMARY KEY(`id`)
+164
<script type="text/javascript">
/* vedomosti mercedes fullscreen second pages */
var ref=document.referrer;
var cookie=Get_Cookie('ved_fullscreen2_1');
if (!cookie && ref!='' && ref!='none' && ref!='blocked' && 'http://'==ref.substring(0,7)) {
ref=ref.substring(7);
var pos=ref.indexOf('/');
var invalid='.vedomosti.ru';
if (pos>0) ref=ref.substring(0,pos);
if (ref.substring( ref.length-invalid.length ) != invalid) {
Set_Cookie('ved_cookie_test',1,1);
if (Get_Cookie('ved_cookie_test')) {
Set_Cookie('ved_fullscreen2_1', 1, 1 * 24 * 3600, '/');
document.location.href = 'http://www.vedomosti.ru/var/bansrc/2011/9a6776.html#!'+(document.location.pathname);
}
}
}
</script>
журнализды из одной пафосной бульварной газетки копят на мерседес
+148
<?php
class CodeCounter {
const MULTILINE_COMMENT = 0x01;
private $dir = null;
private $ext = null;
public function __construct($dir = '.', $ext = '*') {
$this->dir = $dir;
if($ext == '*') {
$this->ext = "/.*/si";
} else {
$e = explode('|', $ext);
foreach($e as &$ext) {
$ext = trim($ext);
if($ext == '')
unset($ext);
}
$r = implode('|', $e);
$this->ext = "/.*\.({$r})$/si";
}
}
public function calculate() {
$lines = 0;
$args = func_get_args();
if(count($args) == 0)
$dir = $this->dir;
else
$dir = $args[0];
if(file_exists($dir) && is_dir($dir)) {
$list = scandir($dir);
foreach($list as $item) {
if($item == '.' || $item == '..')
continue;
$fullItem = realpath($dir . DIRECTORY_SEPARATOR . $item);
if(is_dir($fullItem)) {
$lines += $this->calculate($fullItem);
} else {
if(preg_match($this->ext, $item)) {
echo "Calculating lines in {$fullItem}: ";
$_lines = self::count($fullItem);
echo "{$_lines}\n";
$lines += $_lines;
}
}
}
}
return $lines;
}
private static function count($file) {
$lines = 0;
$d = null;
if(file_exists($file) && ($file = file($file))) {
foreach($file as $line) {
$line = trim($line);
if($line == '')
continue;
if( substr($line, 0, 2) == '//' || //single line comment
substr($line, 0, 1) == '#' || //single line comment
substr($line, 0, 2) == '<?' || //php open tag
substr($line, 0, 2) == '?>' //php close tags
)
continue;
if(($pos = strpos('/*', $line)) !== false) {
if($pos == 0) {
if(strpos('*/', $line, $pos) === false) {
$d = self::MULTILINE_COMMENT;
}
} else {
$lines++;
}
continue;
}
if($d == self::MULTILINE_COMMENT) {
if(strpos('*/', $line) !== false) {
$d = null;
}
continue;
}
$lines++;
}
}
return $lines;
}
}
$counter = new CodeCounter('./amapys', 'php|js');
$lines = $counter->calculate();
echo "\nTotal: {$lines} lines\n";
Автор: POPSuL
Пхп-шники такие пхп-шники.
ООП во все поля. Им неведом sed и awk.
+154
foreach ($templatedata as $templatedataname=>$templatedatavalue)
$$templatedataname = $templatedatavalue;
include($templatesDir.'/'.$file.'.tpl.php');
Велошаблонизатор, превращающий пары ключ-значение из массива в локальные переменные шаблона.
Шаблон - простой php-файл, в нужных местах выводящий полученные значения (реже с какой-либо логикой вроде обработки массива).
+80
thread = new Thread() {
@Override
public void run() {
try {
while( !dataProcessor.isFinished() ) {
dataProcessor.execute();
Thread.sleep( 60 * 1000L );
}
} catch ( Throwable t ) {
logger.fatal( "Fatal error in daemon thread", t );
}
}
};
thread.run();
Вот такое оно параллельное выполнение. Задачка для догадливых.
+76
List<Record> getNewestRecords( int maxResults ) {
List<TenantIssue> allRecords = recordsDao.getAllRecords();
if ( allRecords.size() > maxResults ) {
Collections.sort( allRecords, new Comparator() {
public int compare( Record r1, Record r2 ) {
return (int) r1.getDate().getTime() - r2.getDate().getTime();
}
} );
Collections.reverse( allRecords );
List<Record> newestRecords = new ArrayList<Record>();
for ( int i = 0; i < maxResults; i++ ) {
newestRecords.add( allRecords.get( i ) );
}
} else {
return allRecords;
}
return allRecords;
}
+167
$r = $this->client->getBerechneteGrundversorgungsTarifebyPLZundVerbrauchKundenart($this->params);
По сути не говнокод, но нечитабельность налицо...