• Какие должны быть инструменты планирования разработки до написания кода?

    @noname_d
    Для .NET есть NClass. Легкий, без лишних наворотов инструмент для создания диаграммы классов. Я, правда, им пользовался в основном для генерации диаграмм из уже скомпилированных сборок, а не по прямому назначению, так что ручаться за удобство не могу. Но может окажется полезен.

    P.S. Сам, если проект более-менее сложный, проектирую пока на листочке. Если что-то попроще, то прямо в коде делаю "набросок" в виде набора интерфейсов (пытаясь учесть возможные варианты расширения, но без особого фанатизма), а затем уже приступаю к реализации. Как-то так.
    Ответ написан
    Комментировать
  • Подсветка синтаксиса в RichTextBox

    @noname_d
    Не знаю, как это реализовано в Notepad++, но разумнее всего обновлять подсветку только для тех строк, которые были изменены. Хотя в этом случае есть 2 трудности: во-первых, необходимо как-то отслеживать изменения и, во-вторых, обрабатывать случай, когда подсвечиваемая лексема располагается на нескольких строках (например, многие языки позволяют разбивать строки, заключенные в кавычки; справедливо ли это для PHP - не помню).
    Ответ написан
    Комментировать
  • Asp.net mvc razor?

    @noname_d
    Специально поставил VS 2013 Express for WEB, создал по шаблону Internet Application, запустил - все работает достаточно быстро. Изменение представления без остановки - не более полминуты. Это при том, что все это находится на HDD. Возможно проблема не в перекомпиляции, а в скорости загрузки файлов на сервер. У меня-то проект запускается на локальном IIS8.
    Ответ написан
  • Подсветка синтаксиса в RichTextBox

    @noname_d
    Насколько я знаю, это возможно сделать только при помощи свойства SelectionColor. Т.е. сперва нужно установить Selection на нужный участок текста, а затем задать цвет. Примерно так:

    private void richTextBox1_TextChanged(object sender, EventArgs e)
    {
        var currentSelStart = richTextBox1.SelectionStart;
        var currentSelLength = richTextBox1.SelectionLength;
    
        richTextBox1.SelectAll();
        richTextBox1.SelectionColor = SystemColors.WindowText;
    
        var matches = Regex.Matches(richTextBox1.Text, @"\bclass\b");
        foreach (var match in matches.Cast<Match>())
        {
            richTextBox1.Select(match.Index, match.Length);
            richTextBox1.SelectionColor = Color.Blue;
        }
    
        richTextBox1.Select(currentSelStart, currentSelLength);
        richTextBox1.SelectionColor = SystemColors.WindowText;
    }

    Разумеется, заново раскрашивать весь текст при каждом изменении неправильно. Это нужно делать более оптимальным образом. Кроме того, желательно отключить перерисовку на время раскрашивания, иначе возможны нежелательные моргания при большом размере текста. В примере этого нет, но тут вроде есть решение.
    Ответ написан
    Комментировать