-
В [42] небольшая погрешность в расчетах по первому варианту. Отчисления конторы за 4-х человек, стоимость аренды площади 4-х рабочих мест и амортизация 4-х компов - все это нужно еще и умножить на 1.5, потому что на суммарный код было потрачено 1.5 месяца, а не 1.
Итого разница между двумя вариантами становится не просто немалой, а ОЧЕНЬ немалой.
-
> а эта железка высотой в 3 этажа - вот это страшно!
Судный День грядет! :)
-
Юрий Зотов © (15.05.08 13:55) [60] ОЧЕНЬ немалой кроме амортизации компов еще совт нужен... скока лиц на дельфи стоит? :)
-
> Slym © (15.05.08 13:59) [62]
Точно! Разница увеличилась еще на 2 лицензии (притом, не только на Delphi, а и на систему, да и вообще на ВЕСЬ используемый софт).
-
> Ночной кошмар программиста
Эх, не видели вы чего тут народ творит на С++... :( Причём творил дядька грамотный, головастый, который отреверсинджинирил кучу чужого, вскрыл разные структуры данных, интерфейсы и протоколы. Это талант. Но какой он писал код, мама родная!
-
Alkid © (15.05.08 14:22) [64]
Чего я только не видел на своем веку :) "Кривое не может сделаться прямым". (Еккл.)
-
> Эх, не видели вы чего тут народ творит на С++... :(
Есть такая должность программист-обфускатор! )))))
-
>KSergey © (15.05.08 12:23) [50]
>А почему авторитетом, а не з/п? Или авторитетом - более тонкое искуство при тех же >(или лучших?) результатах, а з/п - это грубо?
Я не сторонник подобные вопросы, связанные с обучением молодых специалистов, регулировать денежкой. Надо дать человеку понять, что деньги - это стимул или розги, не более. Но никак не средство форсирования обучения или поддержки дисциплины. Если чел не хочет или не может (такое тоже бывает), то бесполезно его "воспитывать" рублем. Скорее всего, ошибся сам руководитель, который неверно выбрал для него тему или даже предметную область. Либо человек просто не на своем месте,- в этом случае с ним проще сразу расстаться, хотя я лично считаю такие случаи (благо у меня их было совсем немного) собственными промахами.
А вообще полностью согласен с Юрием, утверждающим, что кадры - это отдельная песня. Я бы даже назвал это не песней, а целой "фонотекой" ;)
-
> Игорь Шевченко © (15.05.08 12:58) [56] > > Romkin © (15.05.08 12:34) [54] > > Ночной кошмар программиста
Ну вот это мой код первого "коммерческого" проекта. Просто в НИИ куда я пришел после института про стандарты, похоже, никто не подозревал и каждый писал как думал.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, StdCtrls, ExtCtrls, registry, Spin, VasMessageBox;
type
TForm4 = class(TForm)
RadioGroup1: TRadioGroup;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
CheckBox2: TCheckBox;
GroupBox1: TGroupBox;
SpinEdit4: TSpinEdit;
SpinEdit5: TSpinEdit;
SpinEdit1: TSpinEdit;
GroupBox2: TGroupBox;
Label1: TLabel;
SpinEdit2: TSpinEdit;
CheckBox3: TCheckBox;
Label2: TLabel;
SpinEdit3: TSpinEdit;
Label3: TLabel;
Label4: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
VasMessageBox1: TVasMessageBox;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
SpeedButton1: TButton;
SpeedButton2: TButton;
ComboBox1: TComboBox;
Label11: TLabel;
Label12: TLabel;
procedure SpeedButton1Click(Sender: TObject);
procedure OnCreate(Sender: TObject);
procedure OnClose(Sender: TObject; var Action: TCloseAction);
procedure SpeedButton2Click(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
public
end;
var
Form4: TForm4;
implementation
uses unit1;
procedure TForm4.SpeedButton1Click(Sender: TObject);
var Registry: TRegistry;
begin
if (SpinEdit5.Value>SpinEdit4.Value) and
(SpinEdit1.Value>SpinEdit5.Value) then
begin
Registry:=TRegistry.Create;
Registry.RootKey:=HKEY_LOCAL_MACHINE;
Registry.OpenKey('SOFTWARE\GART\CS',False);
if CheckBox2.checked=true then
Registry.WriteInteger('Default Minization',1)
else
Registry.WriteInteger('Default Minization',0);
if RadioButton1.Checked=True then
Registry.WriteInteger('Default Status',1);
if RadioButton2.Checked=True then
Registry.WriteInteger('Default Status',2);
Registry.WriteInteger('Time Good',SpinEdit4.Value);
Registry.WriteInteger('Time Normal',SpinEdit5.Value);
Registry.WriteInteger('Time Answer',SpinEdit1.Value);
Registry.WriteInteger('Packet Item',ComboBox1.ItemIndex);
Registry.WriteInteger('Packet Size',StrToInt(ComboBox1.Text));
Form1.NMPing1.PacketSize:=Registry.ReadInteger('Packet Size');
if CheckBox3.checked=true then
Registry.WriteInteger('Corupted Message',1)
else
Registry.WriteInteger('Corupted Message',0);
Registry.WriteInteger('Time Automatic',SpinEdit2.Value);
Registry.WriteInteger('Time Corupted',SpinEdit3.Value);
timealarm:=Registry.ReadInteger('Time Corupted');
CorrMess:=Registry.ReadInteger('Corupted Message');
mainbedtime:=Registry.ReadInteger('Time Answer');
maingoodtime:=Registry.ReadInteger('Time Good');
mainnormaltime:=Registry.ReadInteger('Time Normal');
Registry.Free;
Form1.AutoTimer.Interval:=SpinEdit2.Value*60*1000;
if RadioButton1.Checked=True then
begin
Form1.SpeedButton4.Enabled:=true;
Form1.AutoTimer.Enabled:=False;
automode:=1;
end;
if RadioButton2.Checked=True then
begin
Form1.SpeedButton4.Enabled:=false;
Form1.AutoTimer.Enabled:=True;
automode:=2;
end;
Form1.Showstatus('Настройки змінені');
Form4.Close;
end
else
VasMessageBox1.Execute;
end;
procedure TForm4.OnCreate(Sender: TObject);
var Registry: TRegistry;
begin
Registry:=TRegistry.Create;
Registry.RootKey:=HKEY_LOCAL_MACHINE;
Registry.OpenKey('SOFTWARE\GART\CS',False);
if Registry.ReadInteger('Default Minization')<>0 then
CheckBox2.checked:=true;
if Registry.ReadInteger('Default Status')=1 then
RadioButton1.Checked:=True;
if Registry.ReadInteger('Default Status')=2 then
RadioButton2.Checked:=True;
SpinEdit4.Value:=Registry.ReadInteger('Time Good');
SpinEdit5.Value:=Registry.ReadInteger('Time Normal');
SpinEdit1.Value:=Registry.ReadInteger('Time Answer');
ComboBox1.ItemIndex:=Registry.ReadInteger('Packet Item');
if Registry.ReadInteger('Corupted Message')<>0 then
CheckBox3.checked:=true;
SpinEdit2.Value:=Registry.ReadInteger('Time Automatic');
SpinEdit3.Value:=Registry.ReadInteger('Time Corupted');
Registry.Free;
Form4.ShowModal;
end;
procedure TForm4.OnClose(Sender: TObject; var Action: TCloseAction);
begin
systemloc:=0;
Action:=caFree;
end;
procedure TForm4.SpeedButton2Click(Sender: TObject);
begin
Form4.Close;
end;
procedure TForm4.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_ESCAPE then
SpeedButton2Click(nil);
end;
end.
-
на днях очень долго медитировал на такой код:
switch(forumAttribute) { case 18: iSrc = imgSrc[0]; break; case 530: goto case 18;
-
> [69] clickmaker © (15.05.08 17:07)
Исправили бы, и не думали. switch(forumAttribute)
{
case 18:
case 530:
iSrc = imgSrc[0];
break;
...
-
case forumAttribute of 18, 530: iSrc := imgSrc[0]; end;
Несколько элегантнее, не так ли? :о)
-
>[64] Alkid © (2008-05-15 14:22:00)а, кстати. помнится, почитывал код хороших реверсверов для Z80. screaming fear. хотя и работал. это совсем другое мышление. >[71] Юрий Зотов © (2008-05-15 17:37:00)>Несколько элегантнее, не так ли?да. только в php/c всё-таки лучше. switch (ch)
if (wasA) printf("AAAAAA!\n"); пример безмозглый, конечно. --- Understanding is not required. Only obedience.
-
У нас на днях был найден отжиг: if (ModularOrder.MANYTOONE_STATE == UnicmDefines.CATALOG_ORDER_STATE_FINISHED) Обе константы. Причем обе _текстовые_ константы! (Java)
-
> Kenny © (16.05.08 14:57) [73] > >
А что такого? Завтра я поменяю константы и ок.
-
> TUser ©
Еще один :D
-
> switch (ch) { > case 'A': wasA = true; > case 'B': printf("A or B\n"); break; > default: printf("wtf?\n"); > }
Сквозное выполнение веток -- это, конечно, прикольный трик, но и источник глупых багов тоже.
Глядя на чужой код не всегда (чит.: практически никогда) можно определить, является ли отсутствие бряка между ветками случайной забывчивостью или фишкой. Приходится въезжать во весь код детально.
-
> Еще один :D >
А зачем еще делают константы в программах?
-
-
> TUser © (16.05.08 15:11) [74] Это Java. Там строка - это объект, а переменнаяи типа "строка" - это ссылка на объект. Поэтому условие if (строка1==строка2) ... проверяет равенство ссылок, а не тел строк. Ясно, что если обе строки - константы, то это условие не выполнится никогда.
|