Здравствуйте, VladD2, Вы писали:
V>>Да. Особенно в прикладном коде. Особенно там, где сложность формул преттендует на write-only... хоть какая-то проверка на "здравый смысл".
VD>Ну, привел бы пример из своего кода.
И статистику сколько их таких.
Сколько их — зависит от от характера задач. Когда я писал прогу для расчета импульсных трансфоматоров — это километры расчетов всевозможных параметров по сходящимся алгоритмам. Статистика была под 99%

Жаль, что на тот момент (99-й год) мне не пришло в голову использовать подобные трюки, поэтому отладка была болезненной.
А вот кусок из недавнего (прога — решетка фильтров и преобразователей спектра):
#pragma once
#include "SoundDeviceImpl.h"
namespace SoundCore {
// inputs number - 0, outputs - 1
class SinGenerator : public SoundDeviceImpl<SinGenerator, 0, 1>
{
typedef SoundDeviceImpl<SinGenerator, 0, 1> super;
freq_t freq;
phase_t df;
phase_t currentf;
const phase_t PI2 = phase_t(2*3.1415926535897932384626433832795);
static DeviceDescriptorImpl<SinGenerator> descriptor;
public:
SinGenerator() : freq(500), currentf(0) {}
virtual DeviceDescriptor GetDescriptor() {
return descriptor;
}
freq_t GetFrequency() {
return freq;
}
void SetFrequency(freq_t value) {
freq = value;
PrepareImpl();
}
void PrepareImpl() {
super::PrepareImpl();
df = PI2 * freq / GetSampleFreq();
}
float CalculateImpl() {
currentf += df;
if (currentf > PI2)
currentf -= PI2;
output = Sin(_currentf);
}
inline static ampl_t Sin(phase_t value) {
return ampl_t(SinFromTable(value));
}
};
}
Заметь, подобный код дополнительно самодокументируем.
А на самом деле речь идет о том, что в идеале, если код скомпилировался, то охота верить, что в 99% случаев он верен... это нормально для сильной статической типизации.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>